我有一个动态生成很多复选框(700+)的表单。表单在 IE 中加载非常缓慢(但在 chrome 中几乎没有加载),当我发布表单时,它几乎锁定了我的网络浏览器。
我该如何调试这个或者我做错了什么导致这个性能问题?或者这是预期的一个巨大的形式,我应该试着把它分开。
这是我的控制器:
public ActionResult Create(int id)
{
var model = new TaskRequestViewModel
{
Task = new Task(),
Components = db.Component.ToList()
….
}
return View(model);
}
为了简要解释我的模型,我有大约 10 个组件,每个组件有大约 10 个子组件,每个子组件有大约 10 个选项(复选框)可用。导致上述 700 多个字段(然后是一些隐藏字段)。当复选框较少(100ish)时,它工作正常。
我的观点是这样的(有 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)
}
}
}