我在解决404错误时遇到了困难:
Global.asax.cs中的默认路由:
routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}",
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );VideoController.cs:
[HttpPost]
public ActionResult Save(int id)
{
   try
   {
     return Json(new
     {
       ID = "0"
     });
   }
   catch
   {
     return new HttpStatusCodeResult(418, "I'm a teapot");
   }
}在我看来,ActionLink,Create.cshtml:
@Ajax.ActionLink("GoSave", "Save", "Video", new { id = 1 },
        new AjaxOptions { OnFailure = "Error", OnSuccess = "Saved", 
                          HttpMethod = "POST" })actionlink的url按照预期呈现: /Video/Save/1
当我点击这个链接时,我得到了一个404。
有什么是我看不到的?
发布于 2011-03-26 03:27:39
我敢打赌,您一定遗漏了一个script包含:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>这将悄悄地AJAXify Ajax.ActionLink生成的结果,并执行POST请求,而不是默认的GET请求。你得到的是404,因为你没有包含这个脚本,所以发送了一个GET请求,并且在视频控制器上没有能够接收GET请求的Save操作。
如果您使用过FireBug,就会立即看到:浏览器只是重定向并发送一个GET请求,而不是预期的Ajax POST请求。
发布于 2016-08-31 02:09:52
补充一下Darin的答案。
添加这个NuGet包,它“悄悄地设置jQuery Ajax”。

此程序包所做的全部工作就是安装必要的脚本。

接下来,按照Darin说的做,或者,等效地,添加:
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js") 转到_Layout.cshtml
https://stackoverflow.com/questions/5437136
复制相似问题