मान लिया जाये कि आप कुछ मेटाडाटा के साथ एक दृश्य मॉडल है:
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");
स्रोत
2012-07-19 05:39:44
आपके डोमेन मॉडल बनाएँ और अपने नियंत्रक के माध्यम से यह हेरफेर। मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं क्या आप और स्पष्ट होने की कोशिश कर सकते हैं? – Grixxly
डारिन (नीचे) का उत्तर मुझे जो चाहिए वह बहुत करीब है, लेकिन मैं एक विशिष्ट प्रकार के लिए "जेनेरिक परम" द्वारा संकलित FromLambdaExpression() को कॉल नहीं कर सकता। मैं केवल रनटाइम (गतिशील रूप से) में टाइप निर्धारित कर सकता हूं। – Luciano