我正在尝试使用 MvcContrib Grid 帮助器将模型对象列表绑定到网格。显然,发出 HTML 表格很容易,但我正在努力返回所有选定的行(或所有行并通过 Where(x => x.Selected) 进行过滤)。
这是我的意思的虚拟版本:
模型:
public class Player
{
[ScaffoldColumn(false)]
public int Id { get; set; }
public string Name { get; set; }
public int JerseyNumber { get; set; }
public string Position { get; set; }
[ScaffoldColumn(false)]
public bool Selected { get; set; }
}
看法:
@model democode.Models.Player
@using (Html.BeginForm())
{
@{
var grid = Html.Grid(Model)
.AutoGenerateColumns()
.Columns(c => c.For(p => Html.CheckBoxFor(_ => p.Selected)).InsertAt(0))
.Columns(c => c.For(p => Html.HiddenFor(_ => p.Id)))
grid.Render();
}
<p>
<input type="submit" value="Submit" />
</p>
}
因此,您正在查看的是一个曲棍球运动员网格,每个人前面都有一个复选框,允许用户选择一个或多个。单击提交时,我希望它可以将集合发布回来(理解除了 Selected 和 Id 之外的所有内容都将为空/默认),但我理解问题是 POST 数据中遇到的记录在键值对列表。过去,我通过手写 HTML 表格并使用 Phil Haack 在此处概述的策略成功地解决了这个问题:http: //haacked.com/archive/2008/10/23/model-binding-to-a-list .aspx
我的问题是,我可以使用 MvcContrib 的 Grid 助手做同样的事情,还是它比它的价值更多?