微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 带有Ajax.ActionLink的HTTP 404

我在解决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");
   }
}

在我看来,Action.cshtml中的ActionLink:

@Ajax.ActionLink("GoSave","Save","Video",new { id = 1 },new AjaxOptions { OnFailure = "Error",OnSuccess = "Saved",HttpMethod = "POST" })

actionlink的url按预期呈现:/ Video / Save / 1

当我点击链接时,我得到了404.

我没看到什么?

解决方法

我打赌你错过了一个脚本包含:

<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请求.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐