我无法弄清楚为什么我的动作会返回404'资源无法找到'错误。 控制器名称:ItemManagementController 我的索引视图包含表格中的项目列表。每行包含两个链接,“删除”和“请求更新”。 Delete链接调用Delete操作并正常工作。请求更新给出了404错误,似乎尝试导航到http://localhost/TVAPDev/ItemManagement/RequestUpdate?itemID=9之类的网址。
我必须假设我遗漏了一些简单的东西,因为它们在视角方面的作用相同。控制器中定义的操作都是相似的,除了它们在服务层上调用不同的方法,但就是这样。
以下是我的两个控制器操作。
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult Delete(int itemID) {
var svc = new ItemManagementService(_repository);
var requestModel = svc.GetItemDeleteModel(itemID);
svc.DeleteItem(requestModel);
var message = requestModel.ActionMessage;
return Json(new { id = itemID, ChangeStatus = requestModel.ItemDetails.ItemChangeStatus.ToString(), ChangeType = requestModel.ItemDetails.ItemChangeType.ToString(), message});
}
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult RequestUpdate(int itemID) {
var svc = new ItemManagementService(_repository);
var requestModel = svc.GetItemUpdateRequestModel(itemID);
svc.RequestItemUpdate(requestModel);
var message = requestModel.ActionMessage;
return Json(new { id = itemID, ChangeStatus = requestModel.ItemDetails.ItemChangeStatus.ToString(), ChangeType = requestModel.ItemDetails.ItemChangeType.ToString(), message });
}
以下是视图中定义的链接
<td class="tblist" style="white-space: nowrap;">
@Html.ActionLink("Request Update", "RequestUpdate", new { itemID = item.ItemID }, new AjaxOptions {
HttpMethod = "POST",
Confirm = "Request an Update to this item?",
OnSuccess = "actionCompleted"
})break;
}
</td>
<td class="tblist" style="white-space: nowrap;">
@Ajax.ActionLink("Delete", "Delete", new { itemID = item.ItemID }, new AjaxOptions {
HttpMethod = "POST",
Confirm = "Are you sure you want to delete this Item?",
OnSuccess = "actionCompleted"
})
</td>
同样,此处的删除工作没有问题。请求更新链接给出了Http 404错误。
Anyhelp在这里将不胜感激。
答案 0 :(得分:1)
检查您的View代码...删除是使用Ajax html帮助程序,更新是使用常规html帮助程序。
答案 1 :(得分:1)
为什么在正常AjaxOptions
上使用Html.ActionLink
(Request Update
是什么)?
也许你希望它像这样:
@Ajax.ActionLink(
"Request Update",
"RequestUpdate",
new {
itemID = item.ItemID
},
new AjaxOptions {
HttpMethod = "POST",
Confirm = "Request an Update to this item?",
OnSuccess = "actionCompleted"
}
)