ASP.MVC Ajax响应返回表单,一些JS没有执行

时间:2009-09-16 00:27:20

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

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

我缺少任何设置或技巧吗?

由于

2 个答案:

答案 0 :(得分:0)

我现在有两种方法可以使用它。

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

答案 1 :(得分:0)

如果您正在使用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正确处理脚本标记,这应该可以解决您的问题。