2012-04-12 10 views
8

मैंने हाल ही में वेब एपीआई बीटा में बाध्यकारी मॉडल के लिए सही विस्तारशीलता बिंदु खोजने के बारे में स्टैक ओवरफ़्लो पर here पर एक प्रश्न उठाया। कस्टम प्रदाता/IModelBinder का उपयोग करके मुझे मॉडल बाध्यकारी और मूल्य प्रदाताओं तक पहुंच का पूर्ण नियंत्रण मिलता है।मैं एमवीसी 4 वेब एपीआई में एक कस्टम बाइंडर के भीतर डिफ़ॉल्ट मॉडल बाध्यकारी कैसे आ सकता हूं?

हालांकि, यह वास्तव में बहुत अधिक नियंत्रण है। मैं सिर्फ यह नियंत्रित करना चाहता हूं कि कुछ मूल्यों को मैप किया गया है, और मॉडल बाध्यकारी को कोड-कोड नहीं करना चाहते हैं जो अन्यथा ठीक काम करता।

अंत में, यह मैं ऐसा करने में सक्षम होना चाहते हैं क्या है:

public class MyCustomModelBinder : IModelBinder 
{ 
    public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext) 
    { 
     // Invoke default model binding 

     // Pull out custom values 
     var value1 = bindingContext.ValueProvider.GetValue("value1"); 
     var value2 = bindingContext.ValueProvider.GetValue("value2"); 

     bindingContext.Model.Value1 = DoCustomStuff(value1); 
     bindingContext.Model.Value2 = DoCustomStuff(value2); 

     return true; 
    } 

    ... // Define DoCustomStuff 
} 

ऐसा लगता है कि यह वेबएपीआई के लिए एक डिफ़ॉल्ट प्रदाता के ahold पाने के बहुत मुश्किल है। क्या किसी को पता है कि यह सुलभ है या कस्टम मॉडल बाइंडर में इसे कैसे पहुंचाया जाना चाहिए? वेब एपीआई में यकीन नहीं

उत्तर

-1

इम लेकिन MVC में आप DefaultModelBinder से विरासत और base.BindModel

+1

हाँ कॉल कर सकते हैं, दुर्भाग्य से वेब एपीआई एक पूरी तरह से अलग जानवर अभी बीटा में है। डिफ़ॉल्ट बांधने वाला प्रदाता ऑपरेशन एक सार विधि है। –

+0

इसमें 'asp.net-web-api' का एक टैग है जिसमें' एमवीसी 'की तुलना में बहुत अलग मॉडल बाध्यकारी है, इसलिए यह उत्तर बिल्कुल उपयोगी नहीं है। – atconway