@Ajax.ActionLink使用的是GET而不是POST方式

3

我真的很沮丧,即使经过几个小时的研究,我仍然无法解决这个简单的问题:

@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

也许:https://dev59.com/02jWa4cB1Zd3GeqPs6_3 - Brian
正如重复所说,你缺少对 jquery.unobtrusive-ajax.js 的引用。 - nemesv
@Brian 我想指出的是,尽管问题的源头相同,但该答案是针对 MVC 3 项目的,而我正在使用 MVC 4 项目。这些项目附带的 jQuery 版本不同,并且有一些细微差别需要解决,其他答案没有涉及到。我已经解决了这个问题,现在我将编辑问题并编写自己的答案。 - allenylzhou
@nemesv jquery.validate.unobtrusive.js和jquery.unobtrusive-ajax.js有什么区别? - allenylzhou
@allenylzho validate是用于验证字段(限制、必填、数字等)的。ajax是用于使表单和其他项目通过AJAX发送的。 - Brian
1个回答

7
通常当您想要提交数据时,会使用表单和提交按钮。在我看来,在操作链接上使用POST方法不是一个好主意。
尝试使用@Ajax.BeginForm(...){}
在此之前,请确保在您的web.config中启用了<add key="UnobtrusiveJavaScriptEnabled" value="true" />。检查完毕后,打开您的Web应用程序并查看源代码,确保您已包含以下文件:
<script src="∼/Scripts/jquery-1.10.2.js"></script>
<script src="∼/Scripts/jquery.unobtrusive-ajax.js"></script>

请确保您的浏览器已启用Javascript。

如果以上方法都无法解决问题,请尝试将该网址添加到选项中:

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

这是一个备选方案,用于以下情况:用户已禁用JavaScript,或者您错过了对 jquery.unobtrusive-ajax.js 的引用。


感谢您的答案和建议。虽然它是正确的,但我将写下自己的答案,因为我必须在我的项目设置中进行一些额外的调整,以解决我的特定问题。 - allenylzhou
<add key="UnobtrusiveJavaScriptEnabled" value="true" />修复了我的问题。 - Rm558

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接