【发布时间】:2016-08-28 14:33:09
【问题描述】:
我正在开发一个包含列表的视图(选定的布尔值/ID 字符串/名称字符串/十进制值)。
在此视图中,用户将选择一些项目并提交表单以将它们保存在数据库中。但是这个 List/ 大约有 2000 个项目,而且速度非常慢。
我的控制器:
public ActionResult Create(List<MyClass> list) {
foreach (var item in list) {
if (item.Checked) {
// something
}
}
}
我的观点:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@* TH /HTML *@
@for (int r = 0; r < Model.Count(); r++)
{
<tr class="tr-clickable">
@Html.HiddenFor(i => i[r].ID_User)
<td>@Html.CheckBoxFor(i => i[r].Checked)</td>
<td>@Html.DisplayFor(i => i[r].Anything1)</td>
<td>@Html.DisplayFor(i => i[r].Anything2)</td>
<td>@Html.DisplayFor(i => i[r].Value)</td>
</tr>
}
@* HTML *@
<div class="control-group margin-top-20 pull-right">
<div class="controls">
<input type="submit" class="btn btn-default" value="Send Form" />
</div>
</div>
}
有没有更好的方法在我的控制器中接收此列表?我一直在考虑通过jQuery-ajax发送列表并一一保存。
你们怎么看?
【问题讨论】:
-
用户必须选择 2000 个项目吗?那是糟糕的用户体验。
-
您正在检查发送的项目是否被选中。客户是否可以只发送选定的项目?我想这会显着减少元素。我认为一个一个发送会更慢。
-
从 2000 项中选择从使用经验来看有点麻烦请查看此链接以了解如何将 ilst 传递给控制器haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
-
@Shyju 不,用户选择大约 20/30/100 或所有项目。
标签: c# asp.net-mvc model-view-controller view controller