2008-11-04 12 views
29

में पैरामीटर समेत पूर्ण अनुरोध यूआरएल प्राप्त करें, मैं अपने नियंत्रक में पूरा अनुरोध URL (क्वेरी स्ट्रिंग समेत) कैसे प्राप्त करूं? क्या यह मेरे यूआरएल और फॉर्म पैरामीटर को संयोजित करने का मामला है या क्या कोई बेहतर तरीका है।नियंत्रक

मैंने this प्रश्न की जांच की, लेकिन ऐसा लगता है कि यह एमवीसी पर लागू नहीं है।

अगर मैं गलत हूं तो मुझे सही करें।

कुछ अधिक विस्तृत जानकारी:

मेरी SearchController.AdvancedSearch() मेरे कॉल के बारे में 15 वैकल्पिक पैरामीटर के साथ एक फार्म से निकलती है। पैरामीटर की संख्या और किसी भी संभावित तरीके से (मुझे लगता है) एक साफ तरीके से पारित वैकल्पिक पैरामीटर होने के कारण, मैं नियंत्रक में संभाला गया एक कैचल स्ट्रिंग के लिए गया था।

अब मैं चाहता हूं कि मेरा नियंत्रक ब्रेडक्रंब घटक में अपनी कॉल को स्टोर करे, ताकि जब क्रंब पर क्लिक किया जाए तो सटीक उसी परिणाम को प्राप्त किया जा सकता है (सभी के साथ, लेकिन तर्कों में से अधिक नहीं)। ऐसा करने के लिए मुझे पूरे अनुरोध की आवश्यकता है। URL, क्वेरीस्ट्रिंग समेत।

Request.RawURL, request.URL आदि में यह क्वेरी स्ट्रिंग शामिल नहीं है। असल में मैं एक सादा समारोह करता हूं।

String.Format("{0}/{1}", request.Url, request.form) 

यह मुझे कुछ अजीब परिणाम देता है (जैसे सबमिट बटन मूल्य आदि), लेकिन यह काम करता है। अगर इस बदसूरत हैक को कम करने के सुझाव हैं, तो कृपया बताएं।

मुझे पता है कि वर्तमान अनुरोध कहां मिलना है, लेकिन मुझे कहीं भी कच्चे यूआरएल नहीं मिल रहे हैं। वे सभी क्वेरीस्ट्रिंग से वंचित हैं और मुझे भी थोड़ा सा चाहिए।

मेरा नियंत्रक मेरे BreadCrumb घटक में यूआरएल का संग्रह अद्यतन करता है। इसलिए इसे अनुरोध यूआरएल की जरूरत है। आप कैसे सुझाव देते हैं कि मैं इस समस्या को उठाता हूं?

उत्तर

37

आप Request.Url.PathAndQuery का उपयोग कर सकते हैं।

MVC5: Request.RequestUri.PathAndQuery इस संपत्ति

+2

हेह नहीं है, आपके उत्तर के लिए धन्यवाद हालांकि यह प्रश्न 2 साल पुराना है;) इसी समय एमवीसी के दो और संस्करण सामने आए हैं और वैकल्पिक पैरामीटर एमवीसी फ्रेमवर्क द्वारा समर्थित बीयर हैं, समस्या को प्रस्तुत करते हुए विवादास्पद। –

1

आप का उपयोग करके वर्तमान अनुरोध वस्तु को प्राप्त कर सकते हैं:

HttpContext.Current.Request 

हालांकि, मैं गया है होगा पूछें - तुम क्यों अनुरोध URL चाहते हैं? ऐसा करके, आपने अपने कंट्रोलर को अनुरोध ऑब्जेक्ट पर निर्भर कर दिया है, जो आपके यूनिट को लिखने के लिए बहुत कठिन बना देगा।

21
HttpContext.Current.Request.RawUrl 
HttpContext.Current.Request.QueryString 

जहां तक ​​आपका दूसरा प्रश्न है। यूआरएल, क्वेरी स्ट्रिंग जानकारी, आदि को ट्रैक करने के बजाय, आपका उपयोगकर्ता गया है। नामक नियंत्रकों और कार्यों को ट्रैक करें। इससे पूरी तरह से अनुरोध वस्तु की आवश्यकता को हटा दिया जाएगा।

+0

उत्तर के लिए धन्यवाद। मैं अपनी स्थिति को थोड़ा और स्पष्ट बनाने के लिए अपना प्रश्न अपडेट कर दूंगा। कृपया एक नज़र डालें। –

0

नियंत्रक के भीतर, आप Request.RawUrl तक पहुंच सकते हैं।

+0

उत्तर के लिए धन्यवाद, लेकिन अनुरोध करें।rawurl में querystring –

2
Request.RawUrl 

उपयोग का उपयोग सभी यूआरएल वापसी है।