Ajax.BeginForm 不在 dom 内创建表单标签

标签 ajax asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller

在我的 MVC 项目中,我使用 ajax 表单根据修改后的搜索词动态更新一些搜索结果。

渲染 Ajax.BeginForm() 时方法,它不会渲染 <form>页面上的标签(在 DOM 中)

一切都设置得很好,Jquery、Unobtrusive 和 AJAX 都被引用了,我正在工作 Ajax.BeginForm其他地方的实例

@using (Ajax.BeginForm("FilterSearch","Attachment", new AjaxOptions()
    {
        OnComplete = "updateSearchResults",
        HttpMethod = "POST"
    },new{}))
    {
        @Html.HiddenFor(model => model.AccountId)
        @Html.HiddenFor(model => model.ContactId)
        @Html.HiddenFor(model => model.OpportunityId)


        @Html.TextBoxFor(model => model.SearchTerm, new { placeholder = "Search Term", @class = "header-search-box" })
        <input type="submit" class="header-search-input" />
    }

只是在 DOM 中渲染为

<input id="AccountId" name="AccountId" type="hidden" value="">
<input id="ContactId" name="ContactId" type="hidden" value="">
<input id="OpportunityId" name="OpportunityId" type="hidden" value="O6UJ9A001TB1">
<input class="header-search-box" id="SearchTerm" name="SearchTerm" placeholder="Search Term" type="text" value="">
<input type="submit" class="header-search-input">

最佳答案

要尝试的事情(一般来说):

  1. 检查您的源代码(而不是 DOM 正在解释的内容)。
    • DOM 基于浏览器/HTML 解析器如何解释页面,以及它实际上如何输出。 (无效标记通常会尽解析器的能力被抑制,并且不会显示在调试工具中,但仍会位于页面上)。
  2. 确认您没有任何未对齐的标记。
    • Razor 足够智能,可以检测无效标记,并且可能会清理输出(并修复潜在错误),但不会以您期望的方式进行。
  3. 鉴于这是动态内容,请确保您没有嵌套表单。
    • Ajax.BeginForm (和其他表单助手)供应 <form>/</form>不管标签;它在 ctor/de-ctor 方法中输出这些标签。
    • 某种后处理(在 AJAX 处理器一侧)可能会“清理”输出以避免无效的 HTML(例如嵌套表单标签)。如果它看到已经有一个 <form> ,它可能会从引入的任何补充标记中删除该标签。

关于Ajax.BeginForm 不在 dom 内创建表单标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31612208/

相关文章:

javascript - jQuery:如何发出 AJAX 请求并继续而不等待请求完成?

javascript - 进行两个系列的异步调用,中间有延迟

html - 如何使用ajax设置图片的src?

jquery - 在 ASP.NET MVC 3 View 中显示 JavaScript (jQuery) 错误的推荐方法是什么?

asp.net-mvc-3 - ASP .Net MVC 3 不显眼的自定义客户端验证

javascript - 如何取消ajax加载

asp.net - ASP MVC TextReader

asp.net-mvc - ASP.NET MVC 日历

asp.net-mvc - MVC 3表单通过JQuery重新加载提交 View 而不是 Controller 返回的 View

asp.net-mvc-3 - 带有 OutputCacheAttribute 的 mvc-mini-profiler