में मॉडलमैटाडाटा प्रदाता से ऑब्जेक्ट उदाहरण प्राप्त करें जिसमें एएसपी.नेट एमवीसी 2 में कस्टम DataAnnotationsModelMetadataProvider
लागू किया गया है।एएसपी.नेट एमवीसी
वस्तु है कि प्रदान की जा रही मान लिया जाये कि इस तरह दिखता है:
- Contact : IUpdateable
- Name: string
- ContactType: (Lead, Prospect, Customer)
और नीचे दी गई विधि अर्थ Contact.ContactType
के संदर्भ में है कि:
meta.PropertyName == "ContactType"
meta.ContainerType == typeof(Contact)
meta.Model == ContactType.Lead
(सवाल :) तहत कोड
protected override ModelMetadata CreateMetadata(IEnumerable<Attribute> attributes,
Type containerType,
Func<object> modelAccessor,
Type modelType, string propertyName) {
var containerInstance = meta.NotSureWhatGoesHere as IUpdateable;
meta.IsReadOnly = containerInstance != null && containerInstance.CanBeUpdated(meta.PropertyName);
}
सवाल: मैं मेटाडाटा से संपर्क के कहने कैसे प्राप्त कर सकते हैं? (सही के साथ NotSureWhatGoesHere
को प्रतिस्थापित करें)?
धन्यवाद।
यह एक दिलचस्प चाल है! इसे बाद में एक शॉट दे देंगे। धन्यवाद। –
ऐसा लगता है कि इससे अधिक जटिल है। एक अभिव्यक्ति वृक्ष (और इसके भाग संकलित) को पार करना आवश्यक है और मेटा में मौजूद जानकारी के आधार पर जादुई रूप से कंटेनर ढूंढना आवश्यक होगा। मेटा कंटेनर इंस्टेंस के बारे में कोई विवरण नहीं प्रदान करता है जो आवश्यक कंटेनर इंस्टेंस की पहचान कर सकता है (कंटेनरनाम और टाइप ऐसा करने के लिए पर्याप्त नहीं है क्योंकि उनमें से कई लोग हो सकते हैं)। –
यह मेरे लिए काम किया। –