我想在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