在我的应用程序中,我从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);
}