2010-04-21 21 views
8

मैं asp:GridView प्रदर्शित ग्राहक asp:SqlDataSource का उपयोग कर अनुरोध नहीं हैं। मैं क्लाइंट द्वारा प्रदर्शित जानकारी को सीमित करना चाहता हूं:एएसपी: QueryStringParameter और खाली क्वेरी स्ट्रिंग पैरामीटर

View.aspx सबकुछ प्रदर्शित करना है, View.aspx?client=1 को क्लाइंट आईडी # 1 से केवल अनुरोध प्रदर्शित करना है।

तो मैं क्वेरी "EXEC getRequests @client" के लिए <asp:QueryStringParameter Name="client" QueryStringField="client" /> उपयोग कर रहा हूँ।

सब कुछ काम करता है ठीक से जब कुछ ग्राहक निर्दिष्ट किया जाता है। लेकिन नहीं - अगर नहीं।

मैंने एसएसएमएस का उपयोग करके अपने एसपी का परीक्षण किया - यह दोनों मामलों में ठीक से काम करता है - जब पैरामीटर निर्दिष्ट होता है और जब यह नहीं होता है (NULL स्पष्ट रूप से पारित होता है)।

मुझे क्या करना है?

<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="0"/> 

और उसके बाद में सपा आपको यह सत्यापित करता है, तो ग्राहक 0 है की जरूरत है अन्यथा विशिष्ट, सभी ग्राहकों के लौटने के लिए,:

+0

ऐसा लगता है कि आप इस दृष्टिकोण के साथ कुछ गंभीर गंभीर एसक्यूएल इंजेक्शन हमले वैक्टरों को खोल रहे हैं। – womp

+0

@womp: मैं कैसे खोल रहा हूं? QueryStringParameter केवल उचित अधिकार वाले उपयोगकर्ताओं के लिए और कई चेक के बाद कोड-पीछे में जोड़ा जा रहा है। – abatishchev

+0

एएच, अगर आप इसे स्वच्छ कर रहे हैं, तो यह ठीक है। यह सिर्फ आपके प्रश्न से देखा गया था जैसे आप इसे सीधे इस्तेमाल कर रहे थे। – womp

उत्तर

15

SQLDataSource सक्रिय नहीं होगा अगर यह के पैरामीटर के किसी भी रिक्त हैं,:

<asp:SqlDataSource CancelSelectOnNullParameter="False" /> 

यह भी अपने क्वेरी स्ट्रिंग पैरामीटर के लिए एक अशक्त डिफ़ॉल्ट मान जोड़ने के लिए आवश्यक हो सकता है:

<asp:QueryStringParameter Name="client" QueryStringField="client" DefaultValue="" ConvertEmptyStringToNull="True" /> 
+1

बहुत बहुत धन्यवाद! पहला विकल्प जो मुझे चाहिए वह करता है। – abatishchev

+0

यह वास्तव में एक अजीब डिफ़ॉल्ट है (यानी इसे डिफ़ॉल्ट रूप से पूर्ण पैरा के साथ आग लगनी चाहिए)। मुझे यकीन है कि 'सब कुछ' इंगित करने के लिए पूर्ण पैरा बहुत आम हैं। – Ryan

2

आप एक डिफ़ॉल्ट मूल्य उदाहरण के लिए, उन परिस्थितियों के लिए पैरामीटर के लिए परिभाषित करने की जरूरत एक। निर्दिष्ट न किए

+0

क्या डिफ़ॉल्ट मान को 'NULL' (' DBNull.Value') पर सेट करना संभव है? – abatishchev

+0

हम्म मैं ऐसा नहीं सोचता। लेकिन क्या 0, -1 या कुछ और के बजाय न्यूल का उपयोग करने का कोई कारण है? –

+0

'NULL' के लिए यह' IsNull (,) 'उपयोग करने के लिए एसक्यूएल में निर्मित समारोह आसान है। 0 या -1 जैसे मानों को – abatishchev

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