2011-12-30 8 views
51

मेरे पास error.aspx पृष्ठ है। यदि कोई उपयोगकर्ता उस पृष्ठ पर आता है तो यह का उपयोग कर त्रुटि पथ को page_load() विधि URL में लाएगा और यह ठीक काम करता है।उस अनुरोध को कैसे जांचें .QueryString का एक विशिष्ट मान है या नहीं ASP.NET में?

लेकिन यदि कोई उपयोगकर्ता सीधे उस पृष्ठ तक पहुंचता है तो यह अपवाद उत्पन्न करेगा क्योंकि aspxerrorpath वहां नहीं है।

मैं यह कैसे देख सकता हूं कि aspxerrorpath है या नहीं?

+0

मैंने Request.QueryString.Count! = 0 का उपयोग करने का भी प्रयास किया लेकिन फिर समस्या यह है कि यदि उपयोगकर्ता किसी चीज़ को संलग्न करता है जैसे? Abc = 1223 तो फिर यह अपवाद देगा – Peeyush

+0

'Request.QueryString.Count! = 0' बस बताएगा यदि आप _no_ पैरामीटर हैं तो आप। – Oded

उत्तर

83

तुम बस null के लिए जाँच कर सकते हैं:

// .NET < 4.0 
if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) 
{ 
// not there! 
} 

// .NET >= 4.0 
if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) 
{ 
// not there! 
} 

यदि ऐसा है: पैरामीटर का मान के लिए

if(Request.QueryString["aspxerrorpath"]!=null) 
{ 
    //your code that depends on aspxerrorpath here 
} 
+0

धन्यवाद यह काम करता है मैंने पहले कोशिश की लेकिन उस समय यह काम नहीं किया लेकिन अब यह काम कर रहा है..मुझे उस समय कुछ याद आ रहा था। :-) – Peeyush

+3

@ पीयूश आप शायद पाएंगे कि आप इसे 'कोस्ट करने की कोशिश कर रहे थे।() 'और इसलिए शून्य मूल्य के परीक्षण के पहले परीक्षण करने से पहले एक स्ट्रिंग मान मान पर शून्य को डालने का प्रयास कर रहे थे। यह एक आम गलती है। –

+0

ध्यान दें कि यह जांचने में विफल रहेगा कि क्वेरी में कोई कुंजी मौजूद नहीं है, जब उसके पास कोई मान नहीं है। –

7
string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value 

वापसी करेंगे अगर वहाँ एक मूल्य

35

चेक अस्तित्व में नहीं है, मान null होगा, यदि यह अस्तित्व में है, लेकिन उसके पास कोई मूल्य नहीं है ue सेट यह एक खाली स्ट्रिंग होगा।

मेरा मानना ​​है कि उपर्युक्त आपकी आवश्यकताओं को null के लिए केवल एक परीक्षण से बेहतर होगा, क्योंकि एक खाली स्ट्रिंग आपकी विशिष्ट स्थिति के लिए उतनी ही खराब है।

+1

और क्या होगा यदि .NET == 4.0? 'IsNullOrWhiteSpace' का उपयोग करें? – Chris

+0

यदि .NET == 4.0 है? IsNullOrWhiteSpace का उपयोग करें –

1

अपनी समस्या का समाधान करने के लिए, अपने पृष्ठ की पृष्ठ_ लोड विधि पर निम्न पंक्ति लिखें।

if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return; 

नेट 4.0 अधिक, अशक्त, खाली या खाली स्थान के तार को निकट से देखने पर प्रदान करता है के रूप में इसका इस्तेमाल करते हैं निम्न पंक्ति में दिखाया गया है:

if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return; 

यह अपने अगले बयान नहीं चलेंगे (अपने व्यापार लॉजिक्स) यदि क्वेरी स्ट्रिंग में एस्पैक्सपीरथ नहीं है।

6

तुम भी कोशिश कर सकते हैं:

if (!Request.QueryString.AllKeys.Contains("aspxerrorpath")) 
    return; 
8

एक खाली QueryString आप Request.QueryString.HasKeys संपत्ति का उपयोग करना चाहिए के लिए जाँच करने के लिए। यदि कुंजी मौजूद है

जांचने के लिए: Request.QueryString.AllKeys.Contains()

तो फिर तुम, IST के मूल्य मिलता है और आदि किसी भी अन्य चेक आप चाहते हैं, isNullOrEmpty रूप में इस तरह कर सकते हैं

+1

'Request.QueryString.AllKeys.Contains() 'कुंजी मौजूद होने पर वास्तव में झूठी वापसी होगी लेकिन इसका कोई मूल्य नहीं है। –

3

क्या एक और अधिक प्रत्यक्ष दृष्टिकोण के बारे में?

if (Request.QueryString.AllKeys.Contains("mykey") 
1

लगता है की जांच आप देख रहे हैं यह है:

if(Request.QueryString["query"] != null) 

यह रिटर्न null क्योंकि उस क्वेरी स्ट्रिंग में यह है कि कुंजी के लिए कोई मूल्य नहीं है।

+0

Request.QueryString.GetValues ​​(शून्य)। ("क्वेरी") शामिल नहीं है – user5690126

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