2012-11-19 45 views
4

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

这是我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(); 
} 
+2

只是基于过去的经验预感:您是否添加了并包含“不显眼的Ajax”JS文件? – McGarnagle

+1

通常,这是由于缺少脚本引起的。如果没有他们,这些表格只是正常的表格,并会像预期的那样回传。 –

+0

回答

1

我相当肯定你的问题就出在onclick="javascript:document.forms[0].submit();"。这会将该表单作为普通POST请求提交。如果您想使用@Ajax.BeginForm帮手,请使用常规的<input type="submit">触发提交。如果你确实需要使用一个链接,然后使用@Ajax.BeginForm其实并不重要,因为你将不得不提交代码使用jQuery,Ajax请求等

至于Ajax.BeginForm和重定向而言,形式将恢复到如果用户在其浏览器中禁用了javascript,或者您缺少适当的脚本等,则为正常的HTML表单。

+0

所以,我必须让链接模拟按钮点击? – user1790300

+0

@ user1790300是的,如果您决定不使用'“按钮,那么当用户点击链接时,您将不得不编写jQuery代码来提交ajax POST。 – HTX9