2013-02-05 29 views
20

मैं एएसपी.Net वेब एपीआई में कस्टम मॉडल बाइंडर बनाना चाहता हूं। स्क्रैच से ऐसा करने के तरीके पर बहुत सारे संसाधन हैं, लेकिन मैं मौजूदा कार्यक्षमता का लाभ उठाना चाहता हूं।एएसपीनेट वेब एपीआई में एमवीसी के डिफॉल्टमोडेल बाइंडर के बराबर क्या है?

मैंने कोडप्लेक्स पर स्रोत में चारों ओर देखा है और वहां बहुत सारे मॉडलबिंडर्स देख सकते हैं लेकिन अधिकांश मुहरबंद हैं ... और फिर भी मैं काम नहीं कर सकता कि किस स्थिति में इस्तेमाल किया जाएगा।

यहाँ मेरी api विधि शीर्षक है:

public async Task<HttpResponseMessage> Post(long appId, [FromBody]Field field) 

मुझे क्या करना चाहते हैं मूल रूप से modelbinder के बाद यह सभी बुनियादी गुण आबादी है अवरोधन है, और फिर http अनुरोध हेडर के आधार पर कुछ अतिरिक्त मूल्यों को निर्धारित है कि मैं ग्राहक पक्ष पर स्थापित होगा।

जैसा कि मैंने कहा है, मैं कस्टम मॉडलबिंडर्स और मॉडलबिन्डरप्रोवाइडर्स बनाने और उन्हें तारों के साथ सहज महसूस कर रहा हूं, मुझे थोड़ा सा समस्या है जो प्रदान की गई मौजूदा कार्यक्षमता का पुन: उपयोग करने का प्रयास कर रहा है।

धन्यवाद, पीट

उत्तर

10

एक नज़र यहाँ विस्तार अंक के लिए WebApi के लिए ले लो।

वेबएपी में एमवीसी के DefaultModelBinder के लिए कोई सटीक समतुल्य नहीं है।

यदि आप [FromBody] विशेषता का उपयोग कर रहे हैं तो FormatterParameterBinding लागू किया जाएगा और MediaTypeFormatter का उपयोग आपके मॉडल के निर्माण के लिए किया जाएगा।

ModelBinderParameterBinding लागू करेगा यूआरआई पथ और यूआरएल (क्वेरी पैरामीटर) के लिए मॉडल बाइंडरों जो करने के लिए पर पारित करेंगे या तो एक IValueProvider या एक IModelBinder ...

तो ...

अपने उदाहरण Field में (सामग्री प्रकार वार्ता के परिणाम के आधार पर) इनमें से एक का उपयोग करेगा: XmlMediaTypeFormatter, JsonMediaTypeFormatter या FormUrlEncodedMediaTypeFormatter। इसलिए यह आपके ऊपर अपनी संबंधित सेटिंग्स का उपयोग करके क्रमबद्धता व्यवहार को अनुकूलित करने के लिए है। JSON.NET सेटिंग्स ... या अपने स्वयं के या लपेटा MediaTypeFormatter लागू करें।

अपने उदाहरण में appId शायद एक IValueProvider को पारित किया जाएगा ... की तरह ElementalValueProvider

+0

बहुत बहुत धन्यवाद ... आप बिल्कुल सही हैं। मैं पेड़ों के लिए लकड़ी नहीं देख रहा था। अब मुझे एआईएनसी कार्य निरंतरता का प्रबंधन करने का सही तरीका पता लगाना है और मुझे लगता है कि मुझे सॉर्ट किया गया है :) –