我有ASP.Net MVC3应用程序,其中有一个部分页面加载了大量的html控件(大约数= 980),并为其分配了验证。
JQuery Unobtrusive验证需要很长时间才能使用上述控件验证表单。它达到了应用程序的性能。有没有办法改进,如何对DOM的元素进行验证?
答案 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 () {
我和两个世界都是最好的。