您可以使用该this.ViewData.ModelMetadata.Properties
集合并调用该GetDisplayName
方法来生成标题单元格内容。我们通常在代码中执行此操作,以将任意模型呈现为表格。
编辑:为了对此进行扩展,我使用了一个基本模型,它代表一个表格并且只代表一个表格。我定义了 3 个类。我有一个TableRowCell' class, a
TableRow 类(本质上是一个TableRowCell
对象集合)和一个Table
类。
public class Table
{
public Table(String name)
{
this.Name = name;
this.ContentRows = new List<TableRow>();
this.HeaderRow = new TableRow();
this.FooterRow = new TableRow();
}
public IList<TableRow> ContentRows
{
get;
private set;
}
public TableRow FooterRow
{
get;
private set;
}
public TableRow HeaderRow
{
get;
private set;
}
public String Name
{
get;
private set;
}
}
当我有一个包含要在表格中显示的对象集合的视图模型时,我首先调用一个HtmlHelper
扩展,将该集合转换为Table
对象。在该方法中,我迭代调用以ModelMetadataProviders.Current.GetMetadataForType(null, typeof(TModel)).Properties..Where(item => item.ShowForDisplay)
获取用于生成标题单元格的元数据对象的集合。然后,我遍历项目集合并调用ModelMetadataProviders.Current.GetMetadataForType(() => item, typeof(TModel)).Properties..Where(item => item.ShowForDisplay)
以获取用于生成内容单元格的元数据对象集合。
从技术上讲,我的HtmlHelper
扩展方法实际上返回一个TableBuilder
对象,该对象将调用一个Render
生成 html 的方法。到目前为止,这种设置对我很有帮助。