MVC3路由问题HTTP 404

时间:2011-07-26 17:35:53

标签: asp.net-mvc-3 routing

我无法弄清楚为什么我的动作会返回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在这里将不胜感激。

2 个答案:

答案 0 :(得分:1)

检查您的View代码...删除是使用Ajax html帮助程序,更新是使用常规html帮助程序。

答案 1 :(得分:1)

为什么在正常AjaxOptions上使用Html.ActionLinkRequest Update是什么)?

也许你希望它像这样:

@Ajax.ActionLink(
    "Request Update", 
    "RequestUpdate", 
    new { 
        itemID = item.ItemID 
    }, 
    new AjaxOptions {
        HttpMethod = "POST",
        Confirm = "Request an Update to this item?",
        OnSuccess = "actionCompleted"
    }
)