2013-08-07 4 views

उत्तर

12

जांचें कि यह खाली नहीं है या नहीं। वहाँ कुछ अलग तरीके हैं, लेकिन एक मैंने देखा है और अधिक अक्सर इस्तेमाल की तर्ज पर है:

If Request("FieldName") <> "" Then 
'etc. 
End If 

मैं आमतौर पर स्पष्ट रूप से अगर मैं नीचे दिए गए कोड में से एक के कुछ बदलाव के साथ Form और QueryString संग्रह की जाँच एक या अन्य संदर्भ के आधार पर से चर प्राप्त किया जा सकता है:

Select Case True 
    Case Request.Form("FieldName") <> "" 
     'Run if the Form isn't empty 
    Case Request.QueryString("FieldName") <> "" 
     'Run if the QueryString isn't empty 
    Case Else 
     'Set a predefined default if they're both empty 
End Select 

या तो एक नेस्टेड ... तब:

If Request.Form("FieldName") <> "" Then 
    'Run if the Form isn't empty 
ElseIf Request.QueryString("FieldName") <> "" Then 
    'Run if the QueryString isn't empty 
Else 
    'Set a predefined default if they're both empty 
End If 

यदि मुझे पता है कि यह किस संग्रह से आ रहा है, तो मैं उस संग्रह को विशेष रूप से देखूंगा। इसका कारण यह है कि मैं यह सुनिश्चित करना चाहता हूं कि यह उस चीज़ को खींच रहा है जहां से मैं उम्मीद करता हूं कि मैं कहां से आने की उम्मीद करता हूं। मैं नहीं चाहता कि QueryString में कुछ भेजकर Form मान ओवरराइड कर रहा हो, जब मैं इसकी अपेक्षा नहीं कर रहा हूं।

MSDN से:

तो निर्दिष्ट चर पिछले पांच संग्रह में से एक में नहीं है, अनुरोध वस्तु खाली देता है।

सभी चरों को संग्रह नाम के बिना अनुरोध (चर) पर कॉल करके सीधे पहुंचा जा सकता है।इस मामले में, वेब सर्वर निम्न क्रम में संग्रह खोज:

  • QueryString
  • फार्म
  • कुकीज़
  • ClientCertificate
  • ServerVariables

तो साथ एक चर एक ही नाम एक से अधिक संग्रह में मौजूद है, अनुरोध ऑब्जेक्ट फाई देता है आरएसटी उदाहरण है कि ऑब्जेक्ट मुठभेड़ों।

यह दृढ़ता से अनुशंसा की जाती है कि संग्रह के सदस्यों का जिक्र करते समय पूरा नाम उपयोग किया जाए। उदाहरण के लिए, अनुरोध के बजाय। ("AUTH_USER") Request.ServerVariables ("AUTH_USER") का उपयोग करें। यह सर्वर को आइटम को और अधिक तेज़ी से ढूंढने की अनुमति देता है।

+0

जेएफटीआर: 'अन्यथा अगर' (अंतरिक्ष नोट करें) एक घोंसला सशर्त होगा। 'ElseIf' नहीं है। –

+0

@AnsgarWiechers हाँ ... मेरा मूल उद्देश्य एक सही नेस्टेड के साथ जाना था, लेकिन मैं एक सहकर्मी द्वारा विचलित हो गया। : पी – AnonJr

+2

फ़ील्ड मौजूद हो सकता है, लेकिन मूल्य केवल खाली हो सकता है। टॉमलाक का सही तरीका नीचे है। – bvmobileapps

18
If Request("FieldName").Count > 0 Then 
    ... 
End If 

या, छोटे के लिए: उदाहरण के लिए:

If Request("FieldName").Count Then 
    ... 
End If 

पृष्ठभूमि:

  • Request संग्रह अब तक के रूप में यह एक त्रुटि जब फेंक नहीं है में, जादू है आप उस कुंजी तक पहुंचने का प्रयास करते हैं जो अनुरोध का हिस्सा नहीं था - लेकिन .Count गैर-मौजूदा कुंजी के लिए 0 होगा।
  • एक URL- एनकोडेड क्वेरी स्ट्रिंग में यह की तरह foo&bar&baz
  • कुंजी है कि एक मूल्य नहीं है, भेजने के लिए यह भी foo=value1&foo=value2 जैसे प्रमुख प्रति एक ही कुंजी कई बार, यानि कि एक से अधिक मान भेजने के लिए, कानूनी है कानूनी है।

इसलिए, क्लाइंट द्वारा एक कुंजी भेजी गई है या नहीं, यह निर्धारित करने का विश्वसनीय तरीका यह है कि क्लाइंट ने कितनी बार इसे भेजा है।

इस परीक्षण का एक विशेष मामला यह जांच रहा है कि उस कुंजी के लिए एक खाली खाली मूल्य था (If Request("FieldName") > "")। यह अंत में आप जो चाहते हैं हो सकता है या नहीं हो सकता है; बस जागरूक रहें कि क्वेरी स्ट्रिंग का अंतर्निहित व्यवहार उस से व्यापक है।

+6

+1। यह वह विधि है जिसका उपयोग किया जाना चाहिए। –

0

मैं आमतौर पर सबमिट बटन का मूल्य जांचता हूं। यदि इसे क्लिक किया गया था, तो यह मान फ़ॉर्म डेटा के साथ पोस्ट किया गया है। इसलिए, भले ही आपका सभी फॉर्म डेटा खाली हो, सबमिट बटन का मान नहीं होगा। और यदि सबमिट बटन का मान खाली है, तो उसे क्लिक नहीं किया गया था।

if request("btn_Submit") <> "" Then 
    response.write "form was submitted" 
end if 

यह आपको एक जावास्क्रिप्ट form.submit() कॉल, जिस स्थिति में मैं आमतौर पर छिपी हुई फ़ील्ड के लिए चुनते उपयोग कर रहे हैं और अधिक कठिन है। यदि पैरामीटर मौजूद थे (अपने मूल्य के बारे में देखभाल के बिना)

0

जांच करने के लिए यह भी लिखने के लिए संभव है:

fieldValue = Request("FieldName") 
if Not IsEmpty(fieldValue) ... 

एक लाभ यह अधिक गणना विधि से ऊपर है, कि आप चर परीक्षण कर सकते हैं, का जिक्र किए बिना क्षेत्र का नाम फिर से। "" के लिए परीक्षण पर लाभ यह है कि यदि आप मूल्य निर्दिष्ट किए बिना & फ़ील्डनाम पास करते हैं, तो "" के लिए परीक्षण सही होगा, लेकिन IsEmpty झूठी रिटर्न देता है।

संपादित करें: यह आईआईएस में विश्वसनीय नहीं है।

  1. साथ यूआरएल के लिए? अकेले परम, या? परम = & param2, IsEmpty (परम) झूठी दिखाए, लेकिन
  2. साथ? परम & param2 यूआरएल के लिए, IsEmpty (परम) अजीब तरह से सच रिटर्न ..
संबंधित मुद्दे