Ajax.BeginForm没有提交表单

时间:2016-02-08 23:50:51

标签: ajax asp.net-mvc vb.net razor

我正在做一个MVC教程并遇到了问题。

我将工作视图从使用Html.BeginForm更改为Ajax.BeginForm。但表格没有提交。

根据我的研究,我验证了在web.config中ClientValidationEnabled和UnobtrusiveJavaScriptEnabled都设置为true。我确实有最新版本的jquery.unobtrusive-ajax,js和jquery refrenced。但仍然没有快乐。

我惹恼了jquery.unobtrusive-ajax,看看它在做什么。它正在设置页面加载。但是当我单击“提交”按钮时,不会调用任何函数。

以下是View Source的一个片段,展示了如何开始设置表单标记:

<div id="formSection">
  <h3>Having trouble? Send me a message</h3>
  <form action="/Home/Contact" data-ajax="true" data-ajax-method="post" data-ajax-mode="replace" data-ajax-update="#formSection" id="form0" method="post">
  </form>    
  <textarea name="message"></textarea>
  <input type="submit" value="send" />
</div>

1 个答案:

答案 0 :(得分:0)

在提问时,我的错误变得明显。当我看到结束表单标记在提交按钮之前时,我正在清理HTML的错误格式!

我的Razor代码出错了。

@Using (Ajax.BeginForm("Contact", "Home", New AjaxOptions With {.HttpMethod = "post", .InsertionMode = InsertionMode.Replace, .UpdateTargetId = "formSection"}))
End Using
<textarea name="message"></textarea>
<input type="submit" value="send" />

在使用之后立即使用结束使用当然关闭了块,因此输入元素永远不会进入表单。

正确的语法:

@Using (Ajax.BeginForm("Contact", "Home", New AjaxOptions With {.HttpMethod = "post", .InsertionMode = InsertionMode.Replace, .UpdateTargetId = "formSection"}))
  @<textarea name="message"></textarea>
  @<input type="submit" value="send" />
End Using

如果生成的代码格式化得很好,我会更快地看到结束表单标记位置。

希望我能帮助避免一些头痛。