我目前正在开发 .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();
}
最佳答案
我相当确定您的问题在于 onclick="javascript:document.forms[0].submit();"
.这会将表单作为正常的 POST 请求提交。如果你想使用 @Ajax.BeginForm
helper ,使用常规 <input type="submit">
触发提交。如果您确实需要使用链接,则使用 @Ajax.BeginForm
真的没关系,因为您将不得不使用 jQuery 等编写提交 Ajax 请求的代码。
至于Ajax.BeginForm
和重定向有关,如果用户在浏览器中禁用了 javascript,或者如果您缺少适当的脚本等,表单将恢复为普通的 HTML 表单。
关于c# - Ajax.BeginForm 似乎重定向 Action 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13447792/