我有 ASP.Net MVC3 应用程序,其中有一个部分页面加载大量 html 控件(大约 Count=980),并为其分配了验证。
JQuery Unobtrusive 验证需要很长时间才能使用上述控件验证表单。它影响了应用程序的性能。有没有办法改进,如何对 DOM 的元素进行验证?
我有 ASP.Net MVC3 应用程序,其中有一个部分页面加载大量 html 控件(大约 Count=980),并为其分配了验证。
JQuery Unobtrusive 验证需要很长时间才能使用上述控件验证表单。它影响了应用程序的性能。有没有办法改进,如何对 DOM 的元素进行验证?
我有同样的问题。我们发现没有简单的方法来提高性能。
我不得不为页面禁用不显眼的客户端验证。表单需要 10 + 秒才能呈现,并且每个项目只有一个 id 和复选框,大约 1000 个项目。在我们移除客户端后,不显眼的页面加载大约需要 1 秒
我们刚刚在控制器上进行了验证。
您可以使用这些页面级助手
Html.EnableClientValidation(false);
Html.EnableUnobtrusiveJavaScript(false);
我今天遇到了这个问题。我意识到我的一份大名单出现了明显的放缓。有一个查看所有选项的选项,在该视图中,每行都有一个用于删除项目的表单。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 () {
我拥有两全其美的东西。