asp.net-mvc-3 – ASP.NET MVC3 WebGrid助手和模型元数据

我正在尝试使用ASP.NET MVC 3中的WebGrid html帮助程序根据ModelMetadata中的信息自动生成列.例如,接受对象列表的视图中的代码将是:

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将使用反射或其他内容读取属性的值(我需要在此提醒项目是动态的,其值实际上是当前行中显示的对象).

有没有更好的方法来做到这一点?

谢谢,

科斯塔斯

最佳答案 我建议你研究一下MVCContrib Grid项目:
http://mvccontrib.codeplex.com/wikipage?title=Grid

点赞