【问题标题】:MvcContrib Grid - Issue binding to dynamic values in a DictionaryMvcContrib Grid - 问题绑定到字典中的动态值
【发布时间】:2012-03-14 05:30:04
【问题描述】:

我有一个 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);
    }
})

我遇到的问题是 Grid 中的每一行都完全填充了最后一个属性,例如:

Name           Address       Telephone
____________________________________________
01496 555555   01496 555555  01496 555555 
01496 444444   01496 444444  01496 444444
01496 111111   01496 111111  01496 111111 

我做错了什么???

【问题讨论】:

  • 不清楚你的模型是什么样子的。请张贴他们的结构。

标签: asp.net-mvc asp.net-mvc-3 model-view-controller mvccontrib mvccontrib-grid


【解决方案1】:

回答我自己的问题...

这是一个“访问修改后的闭包”问题。列变量需要分配给 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);
    }
})

【讨论】:

  • 您能否展示一下您的Model.SearchResultsModel.Columns 对象的外观?
  • 我不再拥有将其更改为使用 WebGrid 的代码(如果我没记错的话,这证明更容易用于服务器端分页)。 Columns 集合是 List,其中 Column 是一个非常标准的类,具有 Name 和 Title 的基本属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多