1

簡単な質問があります。

forループでこれを作成するビューがあります:

@for (int i = 0; i < Model.Count(); i++)
            {
                <tr>
                    <td>@Html.DisplayFor(x => x[i].OtherObj.m_ObjName)@Html.HiddenFor(x => x[i].m_Card.m_CardName)</td>
                    <td>@Html.DisplayFor(x => x[i].m_NbInStock)@Html.HiddenFor(x => x[i].m_NbInStock)</td>
                    <td>@Html.DisplayFor(x => x[i].m_QtyAllowed)@Html.HiddenFor(x => x[i].m_QtyAllowed)</td>
                    <td>@Html.CheckBoxFor(x => x[i].m_IsForSelling)</td>

                    @Html.HiddenFor(x => x[i].m_ObjID)
                    @Html.HiddenFor(x => x[i].m_OtherObj)
                    @Html.HiddenFor(x => x[i].m_OtherObjID)
                    @Html.HiddenFor(x => x[i].m_IsAllocated)
                    @Html.HiddenFor(x => x[i].m_IsReallyThere)
                </tr>
            }

あなたはアイデアを得る。オブジェクトのすべてのプロパティに対して隠しボックスを作成する必要があり、リストには多くのアイテムを入力できると考えました。現在の 500 は概算であり、さらに増える可能性があります。

私のポイントは、デバッグがビュー内のコードの最後の行に到達するまで、プロセスが正常にロールするように「見える」ということです。

<div>
    @Html.ActionLink("Back to List", "SearchIndex")
</div>

そして、その時点で、ページが最終的に表示されるまでに約数分から 4 分かかります。すべてのデータが利用可能になると、急上昇するのではないかと心配しています。

すべての隠しフィールドが必要なためですか? HTML ページの生成に時間がかかる場合があります。

知恵をありがとう。

編集 **

私は犯人を持っていると思います:

section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

このコード行をビューの最後に配置していましたが、これが原因でしょうか?

4

1 に答える 1

2

現在の 500 は概算であり、さらに増える可能性があります。

一歩後退することをお勧めします。これは、さまざまな理由からおそらく悪い考えです。

  • ページが POST されるたびに大量のリクエスト サイズが発生する
  • 改ざんされる可能性があるため、すべてを検証する必要がある多くのフィールド
  • 大きなDOM
  • レンダリング エンジンに読み込みます (これには数分かかりませんが、これらすべての式を解析するのは無料ではありません)。

代替案

  • コンテンツを小さなページに分割します。および/またはデータ ページングおよび/または遅延読み込みを使用します。

  • ページと一貫して往復しているユーザー固有のデータには、セッション状態を使用します。

  • データがユーザー固有でない場合 (製品のリストなど)Cacheは、 よりも優れた代替手段ですSession

  • データベースへのトリップをさらに行います。最新のデータベースは、クエリとデータのキャッシュに関して非常に「スマート」です。必要に応じてこのデータをプルアップしても、ディスク サブシステムにヒットすることさえありません (したがって、高速かつ効率的になります)。

  • ローカル ストレージ (サンプル データに基づいて適用できない可能性がありますが、言及する価値があります)

于 2013-03-07T22:10:07.413 に答える