कैसे एक querystring में कई मापदंडों को पारित करने के लिए


89

मेरे पास तीन मान हैं, जिन्हें मुझे उदाहरण के लिए मापदंडों के रूप में पारित करना है strID, strNameऔर strDate

मैं इन तीन मापदंडों को किसी अन्य पेज में रीडायरेक्ट करना चाहता हूं। क्या Response.Redirect()कोई मुझे सही क्वेरिस्ट्रिंग प्रदान कर सकता है?

जवाबों:


111

क्वेरी स्ट्रिंग

(विकिपीडिया प्रविष्टि के लिंक किए गए अनुभाग का पाठ निम्नलिखित है।)

संरचना

क्वेरी स्ट्रिंग वाला एक विशिष्ट URL इस प्रकार है:

http://server/path/program?query_string

जब किसी सर्वर को इस तरह के पेज के लिए रिक्वेस्ट मिलती है, तो वह प्रोग्राम रन करता है (यदि ऐसा करने के लिए कॉन्फ़िगर किया गया है), तो प्रोग्राम को अपरिवर्तित क्वेरी_string पास करना। प्रश्न चिह्न को विभाजक के रूप में उपयोग किया जाता है और यह क्वेरी स्ट्रिंग का हिस्सा नहीं है।

एक वेब पेज के लिंक में एक URL हो सकता है जिसमें एक क्वेरी स्ट्रिंग होती है, हालाँकि, HTML तीन तरीकों को परिभाषित करता है एक वेब ब्राउज़र क्वेरी स्ट्रिंग उत्पन्न कर सकता है:

  • एक वेब फ़ॉर्म के माध्यम से ... तत्व
  • एक निर्माण के साथ तत्व पर ismap विशेषता के माध्यम से एक सर्वर-साइड छवि मानचित्र
  • अब पदावनत तत्व के माध्यम से एक अनुक्रमित खोज

वेब प्रपत्र

क्वेरी स्ट्रिंग्स का मुख्य उपयोग HTML फॉर्म की सामग्री को शामिल करना है, जिसे वेब फॉर्म के रूप में भी जाना जाता है। विशेष रूप से, जब फ़ील्ड फ़ील्ड 1, फ़ील्ड 2, फ़ील्ड 3 युक्त एक फॉर्म सबमिट किया जाता है, तो फ़ील्ड की सामग्री को क्वेरी स्ट्रिंग के रूप में इनकोड किया जाता है:

field1=value1&field2=value2&field3=value3...

  • क्वेरी स्ट्रिंग फ़ील्ड-वैल्यू जोड़े की एक श्रृंखला से बना है।
  • प्रत्येक जोड़ी के भीतर, फ़ील्ड का नाम और मान एक बराबर चिह्न द्वारा अलग किया जाता है। यदि मान एक रिक्त स्ट्रिंग है, तो बराबर चिह्न छोड़ा जा सकता है।
  • जोड़ियों की श्रृंखला को एम्परसेंड द्वारा अलग किया गया है, '&' (या अर्धविराम, ';' HTML में एम्बेड किए गए URL के लिए और a ... द्वारा जनरेट नहीं किया गया है; नीचे देखें)। हालांकि कोई निश्चित मानक नहीं है, अधिकांश वेब फ्रेमवर्क कई मानों को एक ही क्षेत्र से जुड़े होने की अनुमति देते हैं:

field1=value1&field1=value2&field1=value3...

प्रपत्र के प्रत्येक फ़ील्ड के लिए, क्वेरी स्ट्रिंग में एक जोड़ी फ़ील्ड = मान होता है। वेब रूपों में ऐसे फ़ील्ड शामिल हो सकते हैं जो उपयोगकर्ता को दिखाई नहीं देते हैं; जब फॉर्म सबमिट किया जाता है तो इन फ़ील्ड्स को क्वेरी स्ट्रिंग में शामिल किया जाता है

यह सम्मेलन W3C की सिफारिश है। W3C अनुशंसा करता है कि सभी वेब सर्वर एम्परसेंड सेपरेटर के अतिरिक्त अर्धविराम विभाजकों का समर्थन करते हैं [6] जो कि HTML दस्तावेज़ों में URL से एप्लिकेशन एस्केप / एक्स-फॉर्म-urlencoded क्वेरी स्ट्रिंग्स की अनुमति देता है, जिसमें एम्पीयर से बचने के लिए HTML डॉक्यूमेंट्स शामिल हैं।

तकनीकी रूप से, फ़ॉर्म सामग्री केवल क्वेरी स्ट्रिंग के रूप में एन्कोडेड होती है जब फॉर्म सबमिशन विधि GET होती है। एक ही एन्कोडिंग का उपयोग डिफ़ॉल्ट रूप से तब किया जाता है जब सबमिशन विधि POST होती है, लेकिन परिणाम को क्वेरी स्ट्रिंग के रूप में नहीं भेजा जाता है, अर्थात फॉर्म के एक्शन URL में नहीं जोड़ा जाता है। बल्कि, स्ट्रिंग को HTTP अनुरोध के मुख्य भाग के रूप में भेजा जाता है।


34
Query String: ?strID=XXXX&strName=yyyy&strDate=zzzzz

इससे पहले कि आप पुनर्निर्देशित करें:

string queryString = Request.QueryString.ToString();

Response.Redirect("page.aspx?"+queryString);

15

इस तरह की कोशिश करो। यह काम करना चाहिए

Response.Redirect(String.Format("yourpage.aspx?strId={0}&strName={1}&strDate{2}", Server.UrlEncode(strId), Server.UrlEncode(strName),Server.UrlEncode(strDate)));


5

इसका उपयोग करके किया जा सकता है:

Response.Redirect("http://localhost/YourControllerName/ActionMethodName?querystring1=querystringvalue1&querystring2=querystringvalue2&querystring3=querystringvalue3");

1
@ दलीजाप्रसनिकर यह "लिंक" लोकलहोस्ट की ओर इशारा करते हुए एक यूआरएल है और जवाब का हिस्सा है। कृपया "रोबो-रिव्यू" न करें।
एलगाविलन

1

मैं AbsoluteUri का उपयोग करता हूं और आप इसे इस तरह प्राप्त कर सकते हैं:

string myURI = Request.Url.AbsoluteUri;
 if (!WebSecurity.IsAuthenticated) {
        Response.Redirect("~/Login?returnUrl="
            + Request.Url.AbsoluteUri );

इसके बाद आप लॉगिन करें:

var returnUrl = Request.QueryString["returnUrl"];
 if(WebSecurity.Login(username,password,true)){
                Context.RedirectLocal(returnUrl);

ये मेरे लिए अच्छी तरह से काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.