首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带Ajax.ActionLink的HTTP 404

带Ajax.ActionLink的HTTP 404
EN

Stack Overflow用户
提问于 2011-03-26 03:22:39
回答 2查看 2.2K关注 0票数 5

我在解决404错误时遇到了困难:

Global.asax.cs中的默认路由:

代码语言:javascript
运行
复制
routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}",
       new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

VideoController.cs:

代码语言:javascript
运行
复制
[HttpPost]
public ActionResult Save(int id)
{
   try
   {
     return Json(new
     {
       ID = "0"
     });
   }
   catch
   {
     return new HttpStatusCodeResult(418, "I'm a teapot");
   }
}

在我看来,ActionLink,Create.cshtml:

代码语言:javascript
运行
复制
@Ajax.ActionLink("GoSave", "Save", "Video", new { id = 1 },
        new AjaxOptions { OnFailure = "Error", OnSuccess = "Saved", 
                          HttpMethod = "POST" })

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

当我点击这个链接时,我得到了一个404。

有什么是我看不到的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-26 03:27:39

我敢打赌,您一定遗漏了一个script包含:

代码语言:javascript
运行
复制
<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请求。

票数 11
EN

Stack Overflow用户

发布于 2016-08-31 02:09:52

补充一下Darin的答案。

添加这个NuGet包,它“悄悄地设置jQuery Ajax”。

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

接下来,按照Darin说的做,或者,等效地,添加:

代码语言:javascript
运行
复制
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js") 

转到_Layout.cshtml

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5437136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档