2009-10-23 12 views
22

मुझे पता है क्लाइंट आईडी का उपयोग सर्वर पक्ष के लिए जावास्क्रिप्ट और अनन्य आईडी के लिए किया जाता है और क्लाइंट आईडी अंडरस्कोर (_) का उपयोग करता है और UniqueId एएसपीनेट 2.0 में एक डॉलर चिह्न ($) का उपयोग करता है। लेकिन मुझे जो नहीं मिला वह दो अलग-अलग आईडी का उपयोग क्यों करता है। केवल अंडरस्कोर का उपयोग करना या संभव नहीं है कि दोनों में साइन इन करें: सर्वर और क्लाइंट साइड। क्या कोई इसे समझा सकता है?सी # asp.net क्लाइंट आईडी और अनन्य आईडी के बीच कोई अंतर क्यों है?

उत्तर

12

ठीक है, (ऊपर अपने मूल जवाब के अलावा) के रूप में आप शायद UniqueID पता नाम विशेषता और clientid गाया एचटीएमएल टैग की आईडी गुण के साथ साथ प्रयोग किया जाता है। अनन्य आईडी कॉलर को विभाजक के रूप में उपयोग करता है। दूसरी ओर क्लाइंटआईड अंडरस्कोर को विभाजक के रूप में उपयोग करता है, क्योंकि जावास्क्रिप्ट चर नामों में कोलन की अनुमति नहीं है। क्लाइंटिड वास्तव में अनन्य आईडी के रूप में पृष्ठ पर अद्वितीय भी है, लेकिन क्लाइंट-साइड प्रोसेसिंग और सर्वर-साइड (सुंदर स्पष्ट) के लिए क्लाइंट-साइड प्रोसेसिंग और अनन्य आईडी पर लक्षित है, बाद में विशेष रूप से पोस्टबैक डेटा और संयुक्त नियंत्रण के साथ ईवेंट

हालांकि मुझे लगता है कि कुछ तर्क यह हो सकता है कि सामान्य नियंत्रण आईडी में विभाजक के रूप में अंडरस्कोर का उपयोग करना बहुत आम व्यवहार है और इसलिए अंडरस्कोर को अनन्य आईडी में नियंत्रण विभाजक के रूप में उपयोग नहीं किया जा सकता है (यदि हम सैद्धांतिक रूप से एक संपत्ति के साथ प्रबंधन करना चाहते हैं), क्योंकि आप भेद नहीं कर सकते नियंत्रण के बीच। दूसरी तरफ, एक ही तर्क के लिए, आप नियंत्रण आईडी में कोलन का उपयोग नहीं कर सकते हैं, पेज फ्रेमवर्क इसे अनुमति नहीं देता है, ताकि यह सुनिश्चित हो सके कि कोलिन्स क्लाइंट आईडी नहीं प्राप्त कर सकते हैं (यह जावास्क्रिप्ट की वजह से ऐसा नहीं है) ।

और इन कारणों से, कोलन अद्वितीय आईडी में उपयोग करने के लिए बहुत अच्छी पसंद है, क्योंकि FindControl विधि नियंत्रण पेड़ पर नेविगेट करने और नियंत्रणों का पता लगाने के लिए इसका उपयोग कर सकती है (यह आसानी से अद्वितीय आईडी को विभाजित कर सकती है)।

6

यह। यूनिकिड नियंत्रण नाम का नाम सभी नामकरण कंटेनर के साथ जोड़ा गया है, इसे पूरी तरह से योग्य नियंत्रण नाम के रूप में सोचें। यह। क्लाइंट आईडी है जो नियंत्रण की आईडी विशेषता में दिखाई देगी, यह का अनुवाद है (एकमात्र) एचटीएमएल अनुपालन आईडी टैग (अग्रणी अंडरस्कोर वास्तव में एचटीएमएल अनुरूप नहीं है) के लिए अद्वितीय है।

+0

तो, अग्रणी अंडरस्कोर (वास्तव में) HTML अनुपालन नहीं कर रहे हैं। तो डॉलर के संकेतों का उपयोग क्यों नहीं करते? UniqueId के बजाय सर्वर पक्ष पर ClientId का उपयोग क्यों न करें? दोनों वास्तव में वही हैं, केवल अंतर ही डॉलर के चिह्न और अंडरस्कोर का उपयोग है। – Martijn

+0

क्लाइंटिड का उद्देश्य नियंत्रण की विशिष्ट पहचान आईडी को वापस करना है (यह अद्वितीय आईडी के बराबर है लेकिन अंडरस्कोर को नियंत्रण विभाजक के रूप में उपयोग करता है) जिसका उपयोग क्लाइंट-साइड स्क्रिप्टिंग में किया जा सकता है। – JamesM

+1

मुझे लगता है कि आपको मेरा अंक नहीं मिलता :) जावास्क्रिप्ट को डॉलर के संकेत पसंद नहीं हैं और इसलिए यह अंडरस्कोर का उपयोग करता है। यह अभी स्पष्ट है। तो मेरा अगला सवाल है: सर्वर पक्ष पर अंडरस्कोर का उपयोग क्यों न करें? इस प्रकार, सर्वर पर क्लाइंट आईडी का उपयोग क्यों न करें? डॉलर की संकेतों का उपयोग करने वाली एक अलग संपत्ति क्यों होनी चाहिए? सर्वर पर अंडरस्कोर का उपयोग क्यों नहीं किया जा सकता है? – Martijn

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