gpt4 book ai didi

asp.net-mvc - 许多领域的 MVC 性能问题

转载 作者:行者123 更新时间:2023-12-02 20:09:22 24 4
gpt4 key购买 nike

我有一个动态生成很多复选框(700+)的表单。该表单在 IE 中加载速度非常慢(但在 chrome 中几乎加载),当我发布该表单时,它几乎锁定了我的网络浏览器。

我该如何调试这个问题,或者我是否做错了什么导致了这个性能问题?或者这是一个巨大的形式,我应该尝试将其分开。

这是我的 Controller :

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)
}

}

}

最佳答案

使用客户端验证时要注意的另一件事是 Html.HiddenFor。

当您使用 MVC 项目中附带的默认包来使用 jquery.validate.unobtrusive.js 时,您将使用如下所示的脚本渲染:

@Scripts.Render("~/bundles/jqueryval")

(注意:您很可能更改了名称,这是默认名称)

当你有了这个,任何 Html.HiddenFor 将呈现如下:

<input data-val="true" data-val-required="The XYZ field is required." name="XYZ" type="hidden" value="">

不用说,这些字段不需要启用客户端验证。用户看不到它们,也无法与它们交互,并且应始终由您的模型填充。

解决这个问题的方法很简单:

@Html.HiddenFor(x => x.XYZ, new { data_val = "false" })

如果您不需要客户端验证,只需确保不包含该 bundle 即可。

更多阅读此内容here .

关于asp.net-mvc - 许多领域的 MVC 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18004496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com