Asp.net mvc 3 MVC3路由问题HTTP 404

Asp.net mvc 3 MVC3路由问题HTTP 404,asp.net-mvc-3,routing,Asp.net Mvc 3,Routing,我不知道为什么我的操作返回404“找不到资源”错误。 控制器名称:ItemManagementController “我的索引”视图具有表中的项目列表。每行包含两个链接,“删除”和“请求更新”。Delete链接调用Delete操作,工作正常。请求更新给了我404错误,并且似乎试图导航到类似的URL 我必须假设我遗漏了一些简单的东西,因为它们在视图方面所做的是相同的。控制器中定义的操作都是相似的,只是它们在服务层上调用不同的方法,仅此而已 下面是我的两个控制器操作 [AcceptVerbs(Htt

我不知道为什么我的操作返回404“找不到资源”错误。 控制器名称:ItemManagementController “我的索引”视图具有表中的项目列表。每行包含两个链接,“删除”和“请求更新”。Delete链接调用Delete操作,工作正常。请求更新给了我404错误,并且似乎试图导航到类似的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>

@ActionLink(“请求更新”,“请求更新”,新的{itemID=item.itemID},新的AjaxOptions{
HttpMethod=“POST”,
确认=“请求更新此项目?”,
OnSuccess=“actionCompleted”
})中断;
}
@ActionLink(“删除”,“删除”,新的{itemID=item.itemID},新的AjaxOptions{
HttpMethod=“POST”,
确认=“是否确实要删除此项目?”,
OnSuccess=“actionCompleted”
})
同样,这里的删除操作没有问题。请求更新链接给出了HTTP404错误


非常感谢您的帮助。

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

为什么在普通的
html.ActionLink
上使用
AjaxOptions
(这就是
请求更新的含义)

也许你希望它是这样的:

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

我注意到其中一个调用使用Ajax.ActionLink,而另一个调用使用Html.ActionLink。这就是你想要的吗?谢谢。我知道我错过了一些简单的事情,但我就是看不到。我还有其他4个链接没有作为本文的一部分发布,但它们是HTML链接和Ajax链接的混合体,因此查找起来有点困难。再次感谢。