使用 url Action 为标签赋值
Posted
技术标签:
【中文标题】使用 url Action 为标签赋值【英文标题】:Assigning a value to label using url Action 【发布时间】:2022-01-16 21:41:37 【问题描述】:在我的应用程序中,我从 Controller 将值和文本传递给 html 视图。
我还想显示另一个额外的字段,所以我想不要为当前代码而苦苦挣扎,而是从 url.Action 方法将该数据获取到标签。
我想知道在 asp.net 中是否可以这样做?
到目前为止,这也是我的代码。需要帮助来完成代码。场景是,如果请求具有先前的结算,我将该数据加载到带有请求名称和请求 ID 的视图中。还需要修改并显示以前的批准人
这是我的 HTML 代码。
<table class="table">
<tr>
<th>
Settling Request Type
</th>
<th>
Request Id
</th>
<th>
Previously Approved By
</th>
</tr>
@foreach (var item in Settlements)
<tr>
<td>
@Html.Label(item.Text.ToString())
</td>
<td>
@Html.Label(item.Value)
@Html.ActionLink("Click to view", "Details", "AppRequests", new id = @item.Value , new target = "_blank" )
</td>
<td>
<a href="@Url.Action("PreviousTopApprover", "PendingRequestM", new id = item.Value )"></a>
</td>
</tr>
</table>
这是控制器,如果可能的话,我想从这里将 empName 传递给视图并显示它。
public ActionResult PreviousTopApprover(int ?Id)
if (Id !=null)
var Approver = (from appProcess in db.ApprovalProcess
join appParties in db.ApproveParties on appProcess.Id equals appParties.ApprovalProcess_Id
join emp in db.CreateEmployee on appParties.Approver_Id equals emp.Id
where appProcess.Req_Id == Id && appParties.Approve_Type == true
select new emp.EmpName ).ToList();
string empName = Approver.First().EmpName;
return View();
else
return null;
【问题讨论】:
【参考方案1】:如果您无法在视图模型中包含数据,则需要发出 AJAX / FETCH 请求来加载它。
例如:
<td>
<span data-toggle="fetch" data-url="@Url.Action("PreviousTopApprover", "PendingRequestM", new id = item.Value )">Loading...</span>
</td>
<script>
window.addEventListener('DOMContentLoaded', (event) =>
document.querySelectorAll("[data-toggle='fetch']").forEach(async (el) =>
const url = el.dataset.url;
const response = await fetch(url);
if (!response.ok)
const errorMessage = await response.text();
console.error(response.status, response.statusText, errorMessage);
el.innerHTML = "Error loading approver";
return;
const data = await response.text();
el.innerHTML = data;
);
);
</script>
您还需要更改您的操作:
public ActionResult PreviousTopApprover(int ?Id)
if (Id == null) return HttpNotFound();
var approver = (from appProcess in db.ApprovalProcess
join appParties in db.ApproveParties on appProcess.Id equals appParties.ApprovalProcess_Id
join emp in db.CreateEmployee on appParties.Approver_Id equals emp.Id
where appProcess.Req_Id == Id && appParties.Approve_Type == true
select new emp.EmpName )
.FirstOrDefault();
if (approver == null) return HttpNotFound();
return Content(approver.EmpName);
【讨论】:
感谢您的解决方案。小问题,在动作结果中它返回视图。没事吧?因为我遇到了一个错误,当我在调试时遇到它时,它会搜索视图。 我将其更改为返回内容并顺利运行。再次感谢以上是关于使用 url Action 为标签赋值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Url.Action 在 asp.net core 2.0 razor 页面中传递多个操作
servlet:<url-pattern>*.action</url-pattern>这个标签用于设置访问地址?就是这个文件在电脑里存的位置