से जटिल प्रकार के लिए बाइंडिंग मैं ASP.net WebAPI पैरामीटर यूआरआई
URL, इस तरह एक प्रारूप की होनी चाहिए .net 4.5
पर ASP.net WebAPI का उपयोग कर एक बाकी वेब सेवा बनाना चाहते हैं:/values?Age=55&Height=176&Race=1&Weight=80&Gender=male&id=800001
जुड़े नियंत्रक इस तरह दिखता है:
[HttpGet]
public string Get(int id, [FromUri]Demographics demographics)
{ // etc.}
कहाँ जनसांख्यिकी मूल रूप से कुछ गुणों के साथ सिर्फ एक डीटीओ एक कस्टम वस्तु है।
enum Gender
{
Female = 0,
Male
}
डिफ़ॉल्ट मानचित्रण बस ठीक काम करता है अगर ऊपर दिया गया URL स्वरूप की है: हालांकि, यह एक संपत्ति एक कस्टम enum के प्रकार है कि होता है। हालांकि, निश्चित रूप से मुझे यह भी जांचना होगा कि यूआरएल द्वारा प्रदान किए गए पैरामीटर सही हैं या नहीं।
प्रति डिफ़ॉल्ट एएसपीनेट वेबएपी (afaik) अनुमानित प्रकार के आधार पर प्रत्येक पैरामीटर को मैप करने की कोशिश करता है (या यदि इसे उस प्रकार में परिवर्तित किया जा सकता है)। यदि यह यूआरआई में एक मिलान मूल्य नहीं पा रहा है तो ऐसा लगता है कि यह सिर्फ 0
अब यह मुझे एक बहुत ही दुर्भाग्यपूर्ण स्थिति में ले जाता है जहां 0 परिभाषा के अनुसार लिंग जनसांख्यिकी के लिए अभी भी एक मान्य मूल्य है। लिंग (0 ~ लिंग। महिला)।
सबसे आसान समाधान enum को बदलना होगा ताकि 0 एक "अनिश्चित" स्थिति हो जिसे मैं जांच सकूं। हालांकि, मैं enum बदल नहीं सकता है। मैं जनसांख्यिकीय वस्तु के लिए अपना स्वयं का अधिभार बना सकता हूं लेकिन ऐसा नहीं करता, क्योंकि मुझे लगता है कि वहां एक अच्छा तरीका होना चाहिए।
क्या मैं यूआरआई में पैरामीटर को लिंग पैरामीटर को स्पष्ट रूप से बांध सकता हूं और अगर इसे सबमिट नहीं किया गया तो अपवाद फेंक सकता है?
मैंने टाइप कन्वर्टर्स के बारे में पढ़ा है लेकिन मुझे यूआरआई स्ट्रिंग पर काम करना होगा और मुझे लगता है कि मुझे बहुत सारी कार्यक्षमता लागू करनी होगी जो वेबएपी स्पष्ट रूप से पहले से ही है।
कृपया ध्यान रखें कि मुझे यूआरआई पर काम करना है और अनुरोध निकाय का उपयोग नहीं कर सकता है।