2012-07-30 15 views
5

जो मैं करने की कोशिश कर रहा हूं वह एपीआई अनुरोध/एपीआई/कैलकुलेटर जैसा है? = 7,00 & = 9,99 & = 5,50 & = 45,76 आदि कैसे मेरी नियंत्रक अनुरोध डेटा प्राप्त कर सकते हैं? क्वेरी स्ट्रिंग की कुंजी/कोड 1 और 1000 के बीच कीट हैं। क्वेरी स्ट्रिंग में वे 1000 कोडों में से कुछ हो सकते हैं, जरूरी नहीं कि वे सभी। मूल्य भाग युगल है।एएसपी.नेट वेब एपीआई - एकाधिक तर्कों के साथ अनुरोध प्राप्त करें

एक तरह से मुझे लगता है कि काम करेगा यदि मैं 1000 गुणों के साथ एक मॉडल ऑब्जेक्ट (पूर्व StupidObject) बना रहा हूं (अब कोड के लिए पी 1, पी 2, .. पी 1000 नामक गुणों का उपयोग करना चाहिए, क्योंकि इनट्स की अनुमति नहीं है), ModelBinder के साथ सजाया गया। फिर नियंत्रक के लिए मेरे पास GetCalcResult(StupidObject obj){...} जैसा कुछ हो सकता है लेकिन यह एक सुरुचिपूर्ण समाधान की तरह प्रतीत नहीं होता है :)

मैंने GetCalcResult([FromURI]Dictionary<int, double> dict){...} जैसे नियंत्रकों को आजमाया लेकिन निर्देश हमेशा शून्य है। [FromURI] के बिना मुझे एक त्रुटि मिलती है। उसी परिणाम के साथ नियंत्रक पैरामीटर के रूप में List<KeyValuePair<int, double>> भी कोशिश की।

क्या कोई मुझे सही दिशा में इंगित कर सकता है या मुझे एक कामकाजी उदाहरण दे सकता है?

उत्तर

13

एक तरह से एक पैरामीटर के रूप में मान प्रदान करने के लिए कोशिश कर रहा से बचने के लिए और बस अपने कार्रवाई विधि में

var queryValues = Request.RequestUri.ParseQueryString(); 

करते हैं। QueryValues ​​NameValueCollection होगा जिसे आप अपने क्वेरी पैरामीटर तक पहुंच प्राप्त करने के लिए फिर से चालू कर सकते हैं।

यदि आप वास्तव में पैरामीटर का उपयोग करना चाहते हैं, तो प्रकार का पैरामीटर [FromUri] FormDataCollection काम कर सकता है।

+2

धन्यवाद! मैंने 'var queryValues ​​= HttpUtility.ParseQueryString (Request.RequestUri.Query) का उपयोग किया;', क्योंकि RequestUri पर कोई ParseQueryString नहीं था। क्या मुझसे कुछ गलत हो रही है? आरसी संस्करण का उपयोग करना। – ano

+1

ParseQueryString System.Net.Http में परिभाषित एक एक्सटेंशन विधि है, इसलिए आपको System.Net.Http का उपयोग करने की आवश्यकता होगी; – rism

संबंधित मुद्दे