2009-12-10 23 views
62

में पूर्ण क्वेरी स्ट्रिंग प्राप्त करें PHP प्रोग्रामर के रूप में मुझे HTTP क्वेरी स्ट्रिंग को पुनर्प्राप्त करने के लिए $ _GET का उपयोग करने के लिए उपयोग किया जाता है ... और यदि मुझे पूरी स्ट्रिंग की आवश्यकता है, तो इसे करने के तरीके हैं।सी # एएसपी.नेट

एएसपी में हालांकि, मुझे क्वेरी नहीं मिल रही है।

यहाँ news.aspx के लिए कोड (कुछ HTML में एम्बेडेड) है:

<%        
    string URL = "http://www.example.com/rendernews.php?"+Request.Querystring; 
    System.Net.WebClient wc = new System.Net.WebClient(); 
    string data = wc.DownloadString(URL); 
    Response.Output.Write(data); 
%> 

मैं एक दूरस्थ सर्वर से एक PHP स्क्रिप्ट के उत्पादन प्राप्त करने में कठिनाई रहा हूँ, और इस Request.Querystring बिना पूरी तरह से काम करता है।

समस्या यह है कि मैं पहली पंक्ति पर पूर्ण क्वेरी स्ट्रिंग प्राप्त करने का प्रयास कर रहा हूं: Request.Querystring। मुझे एक त्रुटि मिल रही है "ऑब्जेक्ट रेफरेंस किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है" जिसका मूल रूप से अनुरोध है .Querystring मौजूद नहीं है।

कोई विचार क्या समस्या यहां है? कैसे मुझे लगता है कि क्वेरी स्ट्रिंग तो प्राप्त कर सकते हैं जब index.aspx http://test.com/news.aspx?id=2 मेरी स्क्रिप्ट की तरह कहा जाता है http://www.example.com/rendernews.php?id=2

+0

के संदर्भ में यह हमेशा असफल, या वहाँ कोई पारिभाषित प्राप्त चर की तरह किनारे मामलों है? – Matt

+0

यह हमेशा विफल रहता है ... –

उत्तर

155

यदि आप स्ट्रिंग के रूप में कच्चे क्वेरीस्ट्रिंग चाहते हैं तो Request.Url.Query आज़माएं।

5

Request.QueryString रिटर्न आप कुंजी/मान क्वेरी स्ट्रिंग का प्रतिनिधित्व जोड़े का एक संग्रह को हासिल करेगा। एक स्ट्रिंग नहीं है। ऐसा मत सोचो कि ऑब्जेक्ट रेफरेंस त्रुटि का कारण होगा। ऐसा करने का कारण यह है क्योंकि मॉरो ने टिप्पणियों में बताया। यह क्वेरीस्ट्रिंग है और क्वेरीस्ट्रिंग नहीं है।

प्रयास करें:

Request.QueryString.ToString(); 

या

<%         
    string URL = Request.Url.AbsoluteUri 
    System.Net.WebClient wc = new System.Net.WebClient(); 
    string data = wc.DownloadString(URL); 
    Response.Output.Write(data); 
%> 

ही अपने कोड के रूप में लेकिन Request.Url.AbsoluteUri, पूर्ण पथ वापस आ जाएगी क्वेरी स्ट्रिंग भी शामिल है।

+0

इसके साथ मुझे मिलता है: "'System.Web.HttpRequest' में 'क्वेरीस्ट्रिंग' की परिभाषा नहीं है और कोई 'एक्सटेंशन' नहीं है 'Querystring' प्रकार का पहला तर्क 'System.Web.HttpRequest ' और जब मैं इससे पहले System.Web जोड़ने का प्रयास करता हूं, तो मुझे "टाइप या नेमस्पेस नाम' अनुरोध 'नामस्थान' System.Web 'में मौजूद नहीं है (क्या आप एक असेंबली गायब हैं?)" –

+0

शायद बनाना चाहते हैं सुनिश्चित करें कि आप कहीं भी ओवरराइड नहीं कर रहे हैं। मेरे पास उत्पादन में Request.Querystring [.ToString()] का उपयोग कर कुछ है और यह बेकार ढंग से काम करता है। – Matt

+2

यह क्वेरीस्ट्रिंग नहीं है और क्वेरीस्ट्रिंग नहीं है? उपरोक्त कोड सी # की तरह दिखता है - केस संवेदनशीलता याद रखें – Mauro

10

यह आपके लिए ठीक काम करना चाहिए।

इस कोड को पेज के Page_Load घटना में लिखें।

string ID = Request.QueryString["id"].ToString(); 
Response.Redirect("http://www.example.com/rendernews.php?id=" + ID); 
1

बस इस तरह पूर्ण क्वेरी स्ट्रिंग प्राप्त करने के लिए, Request.QueryString.ToString() का उपयोग करें:

string URL = "http://www.example.com/rendernews.php?"+Request.Querystring.ToString(); 
+1

यह कक्षा का नाम देता है। – Allov

+1

@Allov मैंने इसका परीक्षण किया है, और यह क्वेरी स्ट्रिंग को सही तरीके से वापस कर दिया है, और वास्तव में बिना। TStString() यह स्ट्रिंग –

+0

के साथ संगत होने पर काम करेगा। यह .NET में काम नहीं करता है। संभवतः यह वोट है .NET के अन्य संस्करणों के लिए। –

0

मैं अपने उदाहरण का परीक्षण किया है, और जब Request.QueryString एक स्ट्रिंग न निहित है और न ही स्पष्ट अभी भी करने के लिए परिवर्तनीय नहीं है। ToString() विधि सही परिणाम देता है।

"उदाहरण" के रूप में "+" ऑपरेटर का उपयोग करके एक स्ट्रिंग के साथ संयम करते समय यह और भी सही परिणाम देगा (क्योंकि यह व्यवहार करता है जैसे। टोस्टिंग() को बुलाया गया था)।

इस तरह आपके कोड में कुछ भी गलत नहीं है, और मैं सुझाव दूंगा कि आपकी समस्या "क्वेरीस्ट्रिंग" के बजाय आपके कोड लेखन "क्वेरीरींग" में टाइपो की वजह से थी।

और यह आपके त्रुटि संदेश के साथ अधिक समझ में आता है क्योंकि समस्या यह है कि क्वेरीरींग एक संग्रह है और स्ट्रिंग नहीं है, इसे एक और त्रुटि संदेश देना होगा।

0

बस एक पल पहले, मैं एक ही मुद्दे के साथ आया था। और मैं इसे निम्न तरीके से हल करता हूं।

Response.Redirect("../index.aspx?Name="+this.textName.Text+"&LastName="+this.textlName.Text); 

this

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