2009-07-22 10 views
14

हमें किसी अन्य कंपनी से किसी प्रोजेक्ट के हिस्से के रूप में कुछ सी # कोड विरासत में मिला है जो यूआरएल रीडायरेक्ट करता है जो मौजूदा क्वेरी स्ट्रिंग को संशोधित करता है, वस्तुओं के मूल्यों को बदलता है, नए पैराम जोड़ते हैं, आदि आवश्यकतानुसार। मुद्दा यह है कि कोड सबसे अच्छा है, और क्वेरी स्ट्रिंग में डुप्लीकेटिंग आइटम को ठीक से अपडेट करने के बजाय समाप्त होता है। कोड पहले पास पर काम करता है लेकिन अतिरिक्त कॉल पर डुप्लिकेशंस मुद्दे स्पष्ट हो जाते हैं।यूआरएल क्वेरीस्ट्रिंग - मूल्य खोजें, बदलें, जोड़ें, अपडेट करें?

पूर्व: MyPage.aspx StartDate = 08/22/09 & StartDate = 09/22/09

के बजाय आइटम यह या तो नए मान के साथ अद्यतन करने की अगर यह पहले से मौजूद है की जरूरत है डुप्लिकेट, या अगर पहले से नहीं जोड़ा गया है।

क्या क्वेरी सी स्ट्रिंग को संभालने के लिए कोई सी # वर्ग या फ़ंक्शन सेट है, जो कोड के साथ अब उपयोग में आने वाले अंधा जोड़ दृष्टिकोण के बजाय इन मुद्दों के आसपास आने वाले पैरामीटर को एक्सेस करने और अपडेट/जोड़ने के लिए एक आसान माध्यम है। ? इसे कई पैरामीटर को संभालने में सक्षम होना चाहिए जो हर समय मौजूद हो या न हो और बाद में कॉल पर जोड़ा और अपडेट किया जा सके।

यदि संभव हो तो हम जल्द से जल्द कुछ बनाने के बजाय मौजूदा तर्क का उपयोग करेंगे ताकि इसे भविष्य में रखरखाव और पुन: उपयोग के लिए अर्द्ध मानक तरीके से जल्दी से हल किया जा सके।

उत्तर

26

हाँ मैं HttpUtility.ParseQueryString()

का उपयोग कर फिर आप पा सकते हैं द्वारा एक संग्रह करने के लिए क्वेरी स्ट्रिंग परिवर्तित करने का सुझाव देते हैं/जोड़ें/अपडेट करने/मूल्यों संग्रह में सीधे की जगह, इस संग्रह से क्वेरी स्ट्रिंग फिर से बनाने से पहले।

इससे डुप्लीकेट को स्थानांतरित करना आसान हो जाना चाहिए।

+0

आप NameValueCollection से QueryString को फिर से बनाने की अनुशंसा कैसे करेंगे? – tjrobinson

+2

मैं कुछ कोड दृष्टिकोणों के बारे में सोच सकता हूं, लेकिन वे वास्तव में एक टिप्पणी बॉक्स में फिट नहीं होंगे।यह स्टैक ओवरफ्लो है - इसे एक प्रश्न के रूप में पूछें - मुझे यकीन है कि आपको कई जवाब मिलेंगे: डी –

+2

http://blog.leekelleher.com/2008/06/06/how-to-convert-namevaluecollection-to-a -query-string/ – David

0

आप Request.QueryString संग्रह के माध्यम से अपने क्वेरीस्ट्रिंग के सभी मानों तक पहुंच और कुशलतापूर्वक उपयोग कर सकते हैं। यहां एक link है।

+2

मैं इस केवल पढ़ने के लिए है, हालांकि, आप Request.QueryString में मूल्यों को बदल नहीं सकते लगता है:

कैसे इस उपयोगिता वर्ग यहाँ का उपयोग करने पर एक उत्कृष्ट स्क्रीनकास्ट देखें सीधे – tjrobinson

0

यह एक मूल डिजाइन समस्या प्रतीत होता है।

वर्तमान क्वेरी स्ट्रिंग को अपडेट करने के बजाय, क्या किया जाना चाहिए बस हर समय आधार पर सभी पैरामीटर जोड़ना चाहिए।

यकीन है, आप इसे अपडेट कर सकते हैं, लेकिन (स्यूडोकोड)

if querystring exists 
    then update query string 
else 
    add query string 

जब आप 1 से अधिक चर का उपयोग शुरू कर पागल हो जाएगा।

रीडिज़ाइन सबसे अच्छा, प्रयास करने की अनुमति होगी।

0

एएसपी.नेट पर उपलब्ध WCF REST Starter Kit में एक नया "HttpQueryString" सहायक वर्ग भी शामिल है जो मूल कक्षा पुस्तकालय में .NET 4.0 समय सीमा में सबसे अधिक शामिल किया जाएगा।

http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-HttpClient-Query-String-and-Form-Input-Management/

मार्क

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