@ Ajax.ActionLink使用GET而不是POST

all*_*hou 2 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>
Run Code Online (Sandbox Code Playgroud)

虽然我指定了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>
Run Code Online (Sandbox Code Playgroud)

包jquery val包括

jquery.validate.js
jquery.validate.unobtrusive.js
Run Code Online (Sandbox Code Playgroud)

tzo*_*zik 6

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

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

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

<script src="?/Scripts/jquery-1.10.2.js"></script>
<script src="?/Scripts/jquery.unobtrusive-ajax.js"></script>
Run Code Online (Sandbox Code Playgroud)

确保您的浏览器启用了Javascript.

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

@Ajax.ActionLink("Test", "Test", new AjaxOptions { HttpMethod = "Post", Url = Url.Action("Test") })
Run Code Online (Sandbox Code Playgroud)

这是用户已禁用Javascript的案例的后备,要么您错过了引用jquery.unobtrusive-ajax.js.