Zakładając, że model widok z niektórych metadanych:
public class MyViewModel
{
[DisplayName("Bar")]
public string Foo { get; set; }
}
można pobrać te metadane tak:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<MyViewModel, string>(
x => x.Foo,
new ViewDataDictionary<MyViewModel>()
);
Assert.AreEqual("Bar", metadata.DisplayName);
UPDATE:
Zgodnie z wnioskiem w komentarzach sekcja zawiera opis sposobu uzyskania metadanych, jeśli tylko typ jest znany w czasie wykonywania:
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForType(null, type);
i jeśli chcesz uzyskać metadanych dla własności dziecka tylko podać nazwę właściwości:
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, type, "Foo");
Tworzenie modelu domeny i manipulowanie nim za pośrednictwem sterownika. Nie jestem pewien, o co pytasz Czy możesz spróbować być bardziej klarownym? – Grixxly
Odpowiedź od Darina (poniżej) jest bardzo bliska temu, czego potrzebuję, ale nie mogę wywołać funkcji FromLambdaExpression() skompilowanej przez "parametr ogólny" dla określonego typu. Mogę tylko określić typ w czasie wykonywania (dynamicznie). – Luciano