【问题标题】:Ajax.BeginForm not submitting formAjax.BeginForm 未提交表单
【发布时间】:2016-02-08 23:50:50
【问题描述】:

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

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

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

我启动了 jquery.unobtrusive-ajax 以查看它在做什么。它在页面加载时自行设置。但是当我点击提交按钮时没有调用任何函数。

这是一个来自 View Source 的 sn-p,展示了如何开始设置表单标签:

<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>

【问题讨论】:

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


    【解决方案1】:

    我的错误在问这个问题时变得很明显。当我看到结束表单标记位于提交按钮之前时,我正在清理 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 之后立即放置 End Using 当然关闭了块,所以输入元素永远不会进入表单。

    正确的语法:

    @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
    

    如果生成的代码格式正确就好了,我会更快看到结束表单标记的位置。

    希望我能帮助避免挨打。

    【讨论】:

      猜你喜欢
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多