使用url操作为标签分配值



在我的应用程序中,我从Controller向HTML视图传递值和文本。

此外,我想显示另一个额外的字段,所以我想不必纠结于当前的代码,并将数据从url中获取到标签中。行动方法。

我想知道在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;
}

}

如果您不能在视图模型中包含数据,那么您需要发出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);
}

最新更新