我目前正在开发一个.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> </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();
}
答案 0 :(得分:1)
我很确定你的问题出在onclick="javascript:document.forms[0].submit();"
。这将提交表单作为普通的POST请求。如果您想使用@Ajax.BeginForm
帮助程序,请使用常规<input type="submit">
来触发提交。如果你真的需要使用链接,那么使用@Ajax.BeginForm
确实无关紧要,因为你必须使用jQuery等代码提交Ajax请求。
就Ajax.BeginForm
和重定向而言,如果用户在浏览器中禁用了javascript,或者您缺少相应的脚本等,表单将恢复为普通的HTML表单。
答案 1 :(得分:0)
我遇到了同样的问题,我通过在 BundleConfig.cs 中添加以下代码解决了该问题
bundles.Add(new ScriptBundle("~/bundles/jqueryajax").Include(
"~/Scripts/jquery.unobtrusive-ajax.js"));
,然后是 _Layout.cshtml
中的以下代码 @Scripts.Render("~/bundles/jqueryajax")