【问题标题】:@Ajax.ActionLink is using GET instead of POST@Ajax.ActionLink 使用 GET 而不是 POST
【发布时间】:2014-03-15 06:42:30
【问题描述】:

我真的很沮丧,即使经过数小时的研究,我也无法弄清楚这个简单的问题:

@Ajax.ActionLink("Test", "Test", new AjaxOptions { HttpMethod = "Post" })

<a data-ajax="true" data-ajax-method="Post" href="/Home/Test">Test</a>

虽然我指定了 POST,但它向 /Home/Test 发出 GET 请求。

在 _Layout.cshtml 我有

<body>

@RenderBody()

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)

</body>

捆绑 jquery val 包括

jquery.validate.js
jquery.validate.unobtrusive.js

【问题讨论】:

  • 正如副本所说,您缺少jquery.unobtrusive-ajax.js的参考
  • @Brian 我想指出,虽然问题的根源是相同的,但当我使用 MVC 4 项目时,该答案指的是 MVC 3 项目。这些项目附带的 jQuery 版本是不同的,并且有一些细微之处需要解决,而其他答案没有解决。我解决了问题,我将立即编辑问题并编写自己的答案。
  • @nemesv jquery.validate.unobtrusive.js 和 jquery.unobtrusive-ajax.js 有什么区别?
  • @allenylzho validate 用于验证字段(限制、必需、数字等)。 ajax 用于通过 AJAX 发送表单和其他项目。

标签: jquery razor asp.net-mvc-5


【解决方案1】:

通常,当您要提交数据时,您会使用表单和提交按钮。在我看来,在操作链接上使用POST 方法不是一个好主意。

尝试使用@Ajax.BeginForm(...){}。

在您执行此操作之前,请确保您已在 web.config 中启用 &lt;add key="UnobtrusiveJavaScriptEnabled" value="true" /&gt;。检查后,打开您的 Web 应用程序并查看源代码并确保包含以下文件:

<script src="∼/Scripts/jquery-1.10.2.js"></script>
<script src="∼/Scripts/jquery.unobtrusive-ajax.js"></script>

还要确保您的浏览器启用了 Javascript。

如果这些都不能解决您的问题,请尝试将 url 添加到选项中:

@Ajax.ActionLink("Test", "Test", new AjaxOptions { HttpMethod = "Post", Url = Url.Action("Test") })

这是用户禁用 Javascript 或您错过了对 jquery.unobtrusive-ajax.js 的引用的情况的后备。

【讨论】:

  • 感谢您的回答和建议。这是正确的,但我将编写自己的答案,因为为了解决我的特定问题,我必须在项目设置中进行一些额外的调整。
  • 解决了我的问题。
猜你喜欢
  • 2011-08-04
  • 2010-09-07
  • 2016-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
相关资源
最近更新 更多