我有一个SearchResult对象的集合,其中包含任意数量的动态属性的字典,例如名称,地址,食物偏好或其他任何内容。我想动态创建列(基于Columns集合)并在MvcContrib Grid中显示属性。
@Html.Grid(Model.SearchResults).Columns(column =>
{
foreach (var col in Model.Columns)
{
column.For(sr => sr.GetAttribute(col.Name)).Named(col.Title);
}
})
我遇到的问题是网格中的每一行都完全填充了最后一个属性,如下:
Name Address Telephone
____________________________________________
01496 555555 01496 555555 01496 555555
01496 444444 01496 444444 01496 444444
01496 111111 01496 111111 01496 111111
我做错了什么???
答案 0 :(得分:1)
回答我自己的问题......
这是一个“访问修改后的闭包”问题。需要将column变量分配给foreach循环中的局部变量,如下所示:
@Html.Grid(Model.SearchResults).Columns(column =>
{
foreach (var col in Model.Columns)
{
var localCol = col;
column.For(sr => sr.GetAttribute(localCol.Name)).Named(localCol.Title);
}
})