8

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

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

4

2 回答 2

6

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

我不得不为页面禁用不显眼的客户端验证。表单需要 10 + 秒才能呈现,并且每个项目只有一个 id 和复选框,大约 1000 个项目。在我们移除客户端后,不显眼的页面加载大约需要 1 秒

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

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

Html.EnableClientValidation(false);
Html.EnableUnobtrusiveJavaScript(false);
于 2012-12-10T09:23:25.583 回答
2

我今天遇到了这个问题。我意识到我的一份大名单出现了明显的放缓。有一个查看所有选项的选项,在该视图中,每行都有一个用于删除项目的表单。jquery.validate.unobtrusive在加载时破坏了这个页面。当它被移除时,负载​​只有2s。许多表格不需要验证,但有些仍然需要。结果,我查看了该文件的代码并发现了这一点:

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 () {

我拥有两全其美的东西。

于 2013-05-31T20:43:38.647 回答