8

私はASP.Net MVC3アプリケーションを持っています.HTMLコントロールの膨大な負荷(Count=980前後)をロードする部分的なページがあり、検証が割り当てられています.

JQuery 控えめな検証では、上記のコントロールを使用してフォームを検証するのに時間がかかります。アプリケーションのパフォーマンスに影響します。DOM の要素に対して検証を行う方法を改善する方法はありますか?

4

2 に答える 2

6

私も同じ問題を抱えていました。パフォーマンスを改善する簡単な方法は見つかりませんでした。

ページの目立たないクライアント側の検証を無効にする必要がありました。フォームのレンダリングには10秒以上かかり、アイテムごとに約1000アイテムのIDとチェックボックスしかありませんでした。クライアント側を削除した後、目立たないページの読み込みは約1秒でした

コントローラで検証しました。

これらのページレベルのヘルパーを使用できます

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

今日、この問題に遭遇しました。大きなリストの 1 つで大幅な速度低下が発生していることに気付きました。すべてを表示するオプションがあり、そのビューにはアイテムを削除するための行ごとのフォームがあります。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();
            }
        });
    }

その呼び出しを何らかの形で変更する必要があることに気付きましたが、それでも機能は維持されています。私が最終的にやったのは、この解析メソッドを使用したくないすべてのフォームを .xml でマークすることでしたclass="skipValid"。次に、ソース コードで次の変更を行いました。

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

そして、私は両方の長所を持っていました。

于 2013-05-31T20:43:38.647 に答える