FromLambdaExpression
という静的メソッドを持つModelMetaData
クラスがあります。あなたがそれを呼び出してあなたの財産をあなたのViewData
と一緒に渡すと、それはModelMetaData
のインスタンスを返します。そのクラスには、必要なものを提供するDisplayName
プロパティがあります。このオブジェクトから他のメタデータ情報を取得することもできます。
たとえば、空のViewDataDictionary
オブジェクトを作成してこの情報を取得できます。 ModelMetaData
は実際にインスタンスを使用しないため空にすることができます。使用する型を定義するために汎用クラスが必要です。ラムダは、単にあなたがに関するメタデータをするプロパティを見つけようとしているので、あなたが実際のPerson
オブジェクトを持っていない場合は
//This would typically be just your view model data.
ViewDataDictionary<IEnumerable<Person>> data = new ViewDataDictionary<IEnumerable<Person>>();
ModelMetadata result = ModelMetadata.FromLambdaExpression(p => p.First().Name, data);
string displayName = result.DisplayName;
First()
メソッドの呼び出しでも壊れません。同様に、あなたがdこの単一Person
オブジェクトの可能性:
//This would typically be just your view model data.
ViewDataDictionary<Person> data = new ViewDataDictionary<Person>();
ModelMetadata result = ModelMetadata.FromLambdaExpression(p => p.Name, data);
あなたはヘルパーや拡張メソッドと有意にこれをクリーンアップすることもできますが、これは正しい道にあなたを置く必要があります。
あなたのモデルは 'List'のように丈夫にタイプされていますか? –
marcind
はい、IEnumerableです。 –
Shackles