使用MVC3,我创建了一个通用的局部视图,它以IList
为模型,然后根据列表中包含的第一个对象的ModelMetaData
创建一个表。到目前为止,我可以获取对象中每个“东西”的显示名称,但我无法枚举对象中的实际字段/数据。这是我尝试过的:
@model System.Collections.IList
@if (this.Model.IsNullOrEmpty())
{
<p>No items found.</p>
}
else
{
<table>
<thead>
@{
ViewDataDictionary<object> viewData = new ViewDataDictionary<object>();
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<object, object>(m => this.Model[0], viewData);
foreach (var property in metadata.Properties)
{
<th>@property.DisplayName</th>
}
}
</thead>
<tbody>
@foreach (var item in this.Model)
{
ViewDataDictionary<object> itemData = new ViewDataDictionary<object>(item);
<tr>
@foreach (var data in itemData)
{
<td>@data</td>
}
</tr>
}
</tbody>
</table>
}
创建行的循环有效,但ViewData
中没有任何内容。想法?
答案 0 :(得分:1)
您可以使用RouteValueDictionary:
@foreach (var item in this.Model)
{
RouteValueDictionary itemData = new RouteValueDictionary(item);
<tr>
@foreach (var data in itemData)
{
<td>@data.Value</td>
}
</tr>
}