【发布时间】:2011-07-26 17:35:53
【问题描述】:
我不知道为什么我的操作会返回 404“找不到资源”错误。 控制器名称:ItemManagementController 我的索引视图具有表中的项目列表。每行包含两个链接,“删除”和“请求更新”。删除链接调用删除操作并且工作正常。请求更新给了我 404 错误,并且似乎试图导航到像 http://localhost/TVAPDev/ItemManagement/RequestUpdate?itemID=9 这样的 URL。
我不得不假设我遗漏了一些简单的东西,因为它们在视图方面的作用是相同的。控制器中定义的动作都相似,只是它们在服务层调用不同的方法,仅此而已。
这是我的两个控制器动作。
[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 错误。
这里的任何帮助将不胜感激。
【问题讨论】:
-
我注意到其中一个调用使用 Ajax.ActionLink 而另一个使用 Html.ActionLink。这是你的意图吗?
标签: asp.net-mvc-3 routing