【问题标题】:ASP.MVC Ajax response returns form with some JS not executingASP.MVC Ajax 响应返回一些 JS 未执行的表单
【发布时间】:2009-09-16 00:27:20
【问题描述】:

ASP.NET MVC 页面有一个链接 (Ajax.ActionLink),它获取要创建的表单并将其放入其中一个 div。我在 div 中看到了表单,但返回的 JavaScript 都没有被执行。我正在使用 JQuery 验证,需要在表单上运行 validate() 以便验证从 AJAX 请求返回的表单。

有没有我遗漏的设置或技巧?

谢谢

【问题讨论】:

  • 请发布示例代码。具体来说,您返回的是什么类型的数据(JSON、文本等)以及您如何在客户端获取这些信息?

标签: asp.net jquery asp.net-mvc ajax


【解决方案1】:

如果您使用的是 jQuery,只需将 Sys.Mvc.MvcHelpers.updateDomElement 替换为您自己的实现即可。

(function ($) {
    if (Sys && Sys.Mvc && Sys.Mvc.MvcHelpers) {

        Sys.Mvc.MvcHelpers.updateDomElement = function My$updateDomElement(target, insertionMode, content) {
            /// <param name="target" type="Object" domElement="true">
            /// </param>
            /// <param name="insertionMode" type="Sys.Mvc.InsertionMode">
            /// </param>
            /// <param name="content" type="String">
            /// </param>
            if (target) {
                var $target = $(target);
                switch (insertionMode) {
                    case Sys.Mvc.InsertionMode.replace:
                        $target.html(content);
                        break;
                    case Sys.Mvc.InsertionMode.insertBefore:
                        if (content && content.length > 0) {
                           $target.prepend(content);
                        }
                        break;
                    case Sys.Mvc.InsertionMode.insertAfter:
                        if (content && content.length > 0) {
                            $target.append(content);
                        }
                        break;
                }
            }
        }
    }
})(jQuery);

由于 jQuery 正确处理脚本标签,这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

    我现在有两种工作方式。

    1. 使用 JQuery $.get 并将返回的 html 替换到 div 中。这现在正在为我执行脚本。
    2. 其他选项是从 AjaxOptions 中删除 UpdateTargetId 和 ReplaceMode 并使用回调将 html 替换为 div 标签。

    【讨论】:

      猜你喜欢
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多