Supponendo di avere un modello di vista con alcuni metadati:
public class MyViewModel
{
[DisplayName("Bar")]
public string Foo { get; set; }
}
si potrebbe recuperare questi metadati come questo:
ModelMetadata metadata = ModelMetadata.FromLambdaExpression<MyViewModel, string>(
x => x.Foo,
new ViewDataDictionary<MyViewModel>()
);
Assert.AreEqual("Bar", metadata.DisplayName);
UPDATE:
Come richiesto nei commenti la sezione qui è come ottenere i metadati se solo il tipo è noto in fase di esecuzione:
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForType(null, type);
e se si desidera ottenere i metadati per una proprietà bambino solo specificare il nome della proprietà:
var type = typeof(MyViewModel);
var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, type, "Foo");
fonte
2012-07-19 05:39:44
Crea il tuo modello di dominio e manipolarlo tramite il controller. Non sono sicuro di cosa stai chiedendo, puoi provare ad essere più chiaro? – Grixxly
La risposta di Darin (sotto) è molto vicina a ciò di cui ho bisogno, ma non posso chiamare FromLambdaExpression() compilato da "param param" per un tipo specifico. Posso solo determinare il tipo in runtime (dinamicamente). – Luciano