ダイナミクスが多くのチェックボックス (700 以上) を生成するフォームがあります。IE ではフォームの読み込みが非常に遅く (Chrome ではほとんど読み込まれません)、フォームを投稿すると Web ブラウザーがほとんどロックされます。
どうすればこれをデバッグできますか、またはこのパフォーマンスの問題を引き起こしている何か間違ったことをしていますか? それとも、これは巨大なフォームで予想されるので、それを分割しようとする必要があります.
これが私のコントローラーです:
public ActionResult Create(int id)
{
var model = new TaskRequestViewModel
{
Task = new Task(),
Components = db.Component.ToList()
….
}
return View(model);
}
私のモデルを簡単に説明すると、約 10 個のコンポーネントがあり、各コンポーネントには約 10 個のサブコンポーネントがあり、各サブコンポーネントには約 10 個のオプション (チェックボックス) があります。その結果、前述の700以上のフィールド(およびいくつかの非表示フィールド)が生成されます。チェックボックスが少ない場合(100程度)は問題なく動作しました。
私の見解は次のようなものです(3つのネストされたループがあります):
@for (int cI = 0; cI < Model.Components.Count; cI++)
{
@Html.HiddenFor(x => Model.Components[cI].ComponentId)
@for (int scI = 0; scI < Model.Components[cI].SubComponents.Count; scI++)
{
@Html.DisplayFor(x => Model.Components[cI].SubComponents[scI].Name)
@Html.HiddenFor(x => Model.Components[cI].SubComponents[scI].SubComponentId)
@for (int t = 0; t < Model.Components[cI].SubComponents[scI].TaskTypes.Count; t++)
{
@Html.HiddenFor(x => Model.Components[cI].SubComponents[scI].TaskTypes[t].SubComponentTaskTypeId)
@Html.HiddenFor(x => Model.Components[cI].SubComponents[scI].TaskTypes[t].TaskTypeId)
@Html.CheckBoxFor(x => Model.Components[cI].SubComponents[scI].TaskTypes[t].Active)
}
}
}