コレクションを使用してメソッドを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
拡張メソッドは実際には、html を生成するTableBuilder
メソッドが呼び出されるオブジェクトを返します。Render
その設定は、これまでのところうまく機能しています。