@ Ajax.ActionLink使用GET而不是POST

时间:2014-03-15 06:42:31

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

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

@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

1 个答案:

答案 0 :(得分:6)

通常,当您要提交数据时,请使用表单和提交按钮。在我看来,在动作链接上使用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的引用。