Jquery不显眼的验证工作非常慢ASP.Net MVC3

时间:2012-12-10 08:48:37

标签: jquery asp.net-mvc-3 unobtrusive-validation

我有ASP.Net MVC3应用程序,其中有一个部分页面加载了大量的html控件(大约数= 980),并为其分配了验证。

JQuery Unobtrusive验证需要很长时间才能使用上述控件验证表单。它达到了应用程序的性能。有没有办法改进,如何对DOM的元素进行验证?

2 个答案:

答案 0 :(得分:6)

我有同样的问题。我们发现没有简单的方法来改善性能。

我必须为页面禁用不显眼和客户端验证。表格花了10 +秒进行渲染,每个项目只有一个id和复选框,大约1000个项目。我们删除客户端后,不显眼的页面加载大约是1秒

我们刚刚在控制器上验证了。

您可以使用这些页面级助手

Html.EnableClientValidation(false);
Html.EnableUnobtrusiveJavaScript(false);

答案 1 :(得分:2)

我今天遇到过这个问题。我意识到我的一个大型名单上有明显的减速。有一个选项可以查看所有,在该视图中,每行有一个表单用于删除项目。 jquery.validate.unobtrusive正在加载此页面。当它被移除时,负载​​仅为2秒。许多表格不需要验证,但有些表格仍然没有。结果,我查看了该文件的代码并找到了:

parse: function (selector) {
        /// <summary>
        /// Parses all the HTML elements in the specified selector. It looks for input elements decorated
        /// with the [data-val=true] attribute value and enables validation according to the data-val-*
        /// attribute values.
        /// </summary>
        /// <param name="selector" type="String">Any valid jQuery selector.</param>
        $(selector).find(":input[data-val=true]").each(function () {
            $jQval.unobtrusive.parseElement(this, true);
        });

        $("form").each(function () {//THIS IS THE OFFENDING CODE
            var info = validationInfo(this);
            if (info) {
                info.attachValidation();
            }
        });
    }

我意识到我需要以某种方式改变该调用,但仍保留功能。我最终做的是用class="skipValid"标记我不希望通过此解析方法的所有表单。然后,在源代码中,我做了这个改变:

$("form:not(.skipValid)").each(function () {

我和两个世界都是最好的。