asp.net mvc - Custom model binder for a property -


मेरे पास एक निम्न नियंत्रक क्रिया है:

  [एचटीटीपी पोस्ट] सार्वजनिक व्यू रिजल्ट डोसमिंग (मायमोल्ड मॉडल ) {// कुछ वापसी देखें (); }  

MyModel इस तरह दिखता है:

  सार्वजनिक वर्ग MyModel {सार्वजनिक स्ट्रिंग propertyA {get; सेट;} सार्वजनिक IList & lt; int & gt; संपत्ति बी {प्राप्त करें; सेट;}}  

तो डिफ़ॉल्टमोडेलबैन्डर को बिना किसी समस्या के बाँध चाहिए। केवल एक चीज यह है कि मैं प्रॉपर्टीबी बंधन के लिए विशेष / कस्टम बाइंडर का उपयोग करना चाहता हूं और मैं इस बांधने की पुन: उपयोग करना चाहता हूं। इसलिए मैंने सोचा था कि समाधान को मॉडलबीण्डर एट्रिब्यूट को प्रॉपर्टीबी से पहले रखना होगा जो निश्चित रूप से काम नहीं करता है (मॉडलबेंडर एट्रिब्यूट को किसी प्रॉपर्टी पर अनुमति नहीं है)। मैं दो समाधान देखता हूं:

1) मॉडल के बजाए एक्शन मापदंडों का उपयोग करने के लिए जिसे मैं पसंद नहीं करता (मॉडल में कई गुण हैं ...) इस तरह से:

  सार्वजनिक व्यूResult DoSomething (स्ट्रिंग प्रॉपर्टी A, [ModelBinder (typeof (MyModelBinder)) propertyB) ...  

2।) एक नया प्रकार बनाने के लिए MyCustomType कहें: सूची और रजिस्टर इस प्रकार के लिए मॉडल बाइंडर (यह एक विकल्प है)

क्या कोई दूसरा, तीसरा समाधान है? शायद MyModel के लिए एक बाइंडर बनाने के लिए, बाइंडप्रॉपर्टी ओवरराइड करें और अगर संपत्ति "प्रॉपर्टीब" है, तो मेरी कस्टम बाइंडर के साथ संपत्ति को बाँध लें क्या यह संभव है?

आपके उत्तर के लिए धन्यवाद ...

BindProperty को ओवरराइड करें और यदि संपत्ति "PropertyB" है तो मेरी कस्टम बाइंडर के साथ संपत्ति को बाइंड करें

यह एक अच्छा समाधान है, यद्यपि "PropertyB" की जांच करने के बजाय आप अपने स्वयं के कस्टम विशेषताओं की जांच कर सकते हैं संपत्ति-स्तर के बाँधों को परिभाषित करें, जैसे

  [सम्पत्तिविभाजक (टाइपफ (प्रॉपर्टीबबिन्डर))] सार्वजनिक आईएलआईआईएसटी & लेफ्टिनेंट; इंट & gt; संपत्ति बी {प्राप्त करें; सेट;}  

आप बिंदप्रॉपर्टी ओवरराइड का एक उदाहरण देख सकते हैं।


Comments

Popular posts from this blog

sql - dynamically varied number of conditions in the 'where' statement using LINQ -

asp.net mvc - Dynamically Generated Ajax.BeginForm -

Debug on symbian -