ある種のデータをエクスポートする (ファイルをビルドする) 必要があるため、データはビューによって生成 (レンダリング) されるのではなく、ビュー以外の純粋な C# コードによって生成されます。しかし、ModelMetadata 情報が必要です。
また、単体テスト内で ModelMetadata を構築する方法も尋ねます。
ある種のデータをエクスポートする (ファイルをビルドする) 必要があるため、データはビューによって生成 (レンダリング) されるのではなく、ビュー以外の純粋な C# コードによって生成されます。しかし、ModelMetadata 情報が必要です。
また、単体テスト内で ModelMetadata を構築する方法も尋ねます。
いくつかのメタデータを含むビュー モデルがあると仮定します。
public class MyViewModel
{
[DisplayName("Bar")]
public string Foo { get; set; }
}
このメタデータは次のように取得できます。
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<MyViewModel, string>(
x => x.Foo,
new ViewDataDictionary<MyViewModel>()
);
Assert.AreEqual("Bar", metadata.DisplayName);
アップデート:
コメント セクションで要求されているように、実行時に型のみがわかっている場合にメタデータを取得する方法は次のとおりです。
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForType(null, type);
子プロパティのメタデータを取得する場合は、プロパティの名前を指定するだけです:
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, type, "Foo");