我想在ASP.NET MVC 3中使用WebGrid html helper根据ModelMetadata中的信息自动生成列。例如,在一个观点,即接受对象的列表的代码如下:ASP.NET MVC3 WebGrid帮手和模型元数据
var grid = new WebGrid(Model);
@grid.GetHtml(columns: ViewData.ModelMetadata.Properties.Single.Properties
.Select(p => grid.Column(
columnName: p.PropertyName,
header: p.ShortDisplayName
)));
这实际上就像一个魅力(我很惊讶它实际上容易)。这里发生的是,从模型的属性中,我使用ShortDisplayName作为列标题。
问题?我需要将默认格式应用于所有列。基本上我想使用Html.Raw扩展来显示网格中的所有数据。尝试将类似的东西:
var grid = new WebGrid(Model);
@grid.GetHtml(columns: ViewData.ModelMetadata.Properties.Single.Properties
.Select(p => grid.Column(
columnName: p.PropertyName,
header: p.ShortDisplayName,
format: (item) => Html.Raw(GetPropertyValue(item, p.PropertyName))
)));
其中方法GetPropertyValue将使用反射或任何(我在这里需要提醒的是,项目是动态的,它的价值实际上是作为对象读取属性的值显示在当前行中)。
有没有更好的方法来做到这一点?
感谢,
科斯塔斯·
好问题kkara! – Rookian 2011-03-04 22:53:50