【发布时间】:2011-06-19 23:03:02
【问题描述】:
我正在尝试使用 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 方法将使用反射或其他方式读取属性的值(我需要在这里提醒一下,项目是动态的,它的值实际上是当前行中显示的对象)。
有没有更好的方法来做到这一点?
谢谢,
科斯塔斯
【问题讨论】:
标签: asp.net-mvc-3 modelmetadata webgrid