4

我目前正在开发一个 .net mvc 3 应用程序。这是问题所在。出于某种原因,虽然我正在使用 Ajax.BeginForm 并且调用了正确的操作,但在操作完成后,它试图重定向到另一个不存在的页面。但是,我希望它保持在同一页面上,只需使用 ajax 提交表单并在操作完成后向用户返回一些友好的消息。

这是我的 Ajax.BeginForm 页面:

@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { HttpMethod = "Post" }))
{
    <div id="lnkContainer"><a href="#" onclick="javascript:document.forms[0].submit(); return false;">Update</a>&nbsp;</div>
    @Html.TextAreaFor(m => m.Message, new { style = "width:575px" })
}

这是我的行动:

[Authorize]
[AcceptVerbs(HttpVerbs.Post)]
public PartialViewResult Action(ActionModel actionModel)
{
database-related code
.....
database-related code

return PartialView(); 
}
4

2 回答 2

1

我相当肯定你的问题在于onclick="javascript:document.forms[0].submit();"。这会将表单作为正常的 POST 请求提交。如果要使用@Ajax.BeginForm帮助程序,请使用正则<input type="submit">来触发提交。如果您真的需要使用链接,那么使用@Ajax.BeginForm真的没关系,因为您必须使用 jQuery 等编写提交 Ajax 请求的代码。

Ajax.BeginForm重定向而言,如果用户在其浏览器中禁用了 javascript,或者您缺少适当的脚本等,表单将恢复为普通的 HTML 表单。

于 2012-11-21T07:22:45.737 回答
0

我遇到了同样的问题,我通过在BundleConfig.cs中添加以下代码来解决它 bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include( "~/Scripts/jquery.unobtrusive-ajax.js"));

然后是_Layout.cshtml中的以下代码

@Scripts.Render("~/bundles/jqueryajax")

于 2020-04-16T12:12:49.123 回答