我一直在嘗試從視圖將用戶的 ID 和 ID 傳遞給我的控制器。我一直在視圖中使用 ActionLink,在控制器中使用 ActionResult。似乎沒有任何幫助。我也嘗試過 Html.BeginForm 但效果不佳。在這兩種情況下,我最后都會收到 Resource Not Found 錯誤。
這是我的控制器功能:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ApproveUser(int id)
{
UserDTO user = new UserDTO();
user = userService.GetUser(id);
user.Approved = true;
userService.Update(user);
return RedirectToAction("Index");
}
這是我的觀點(ActionLink):
@foreach (var item in Model.Users)
{
if (item.Approved == false)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Login)
</td>
<td>
@Html.ActionLink("Approve", "ApproveUser", "AdminController", new { id = item.Id }, null)
</td>
</tr>
}
}
這是錯誤的螢屏截圖:

uj5u.com熱心網友回復:
您想使用@Html.ActionLink. 你可以這樣做:
首先指定正確的路線,您AdminController作為Controller引數提到過。您只需要在Admin那里指定。將您更改id為更具體的術語,例如itemid. id可以混淆路線。
@foreach (var item in Model.Users)
{
if (item.Approved == false)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Login)
</td>
<td>
@Html.ActionLink("Approve", "ApproveUser", "Admin", new { itemid = item.Id }, null)
</td>
</tr>
}
}
從您的Controller方法中洗掉屬性,因為默認動詞是HttpGet,這就是您在這里所做的。不需要ValidateAntiForgeryToken屬性,因為您不是首先生成它,而是POST在表單提交期間用于請求。
public ActionResult ApproveUser(int itemid)
{
UserDTO user = new UserDTO();
user = userService.GetUser(itemid);
user.Approved = true;
userService.Update(user);
return RedirectToAction("Index");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/452687.html
標籤:C# 网 asp.net-mvc
