वेबफॉर्म और jQuery, आईडी के मिलान कैसे करें?

मैं एएसपीनेट वेबफॉम्स के साथ jQuery का उपयोग करना चाहता हूँ। क्या मुझे एक विशेष टूलकिट प्राप्त करने की आवश्यकता है ताकि .NET नियंत्रण अनुकूल नियंत्रण आईडी को थूक जाए?

कारण, मैं अपने एचटीएमएल आईडी को नियंत्रण_123_asdfcontrol_234 जैसे संदर्भ में जावास्क्रिप्ट लिखना नहीं चाहता हूं।

क्या इसे संस्करण 3.5 में संबोधित किया गया है? (मुझे याद है कि आपको कुछ विशेष डीएल प्राप्त करना है जो आईडी के अनुकूल बनाता है)।

0
हाँ वेबफॉर्म, mybad।
जोड़ा लेखक Blankman, स्रोत
मुझे लगता है, आप वेबफॉर्म का मतलब है, Winforms नहीं?
जोड़ा लेखक splattne, स्रोत

7 उत्तर

सबसे आसान तरीका यह है कि अधिकांश नियंत्रणों के लिए मैंगलेड आईडी के अंत में मिलान करना है। अपवाद जो कि रेडियोबूटन सूचियों और चेकबॉक्स सूचियों के बारे में जानते हैं - आपको उनके साथ थोड़ा सा ट्रिकियर होना होगा।

लेकिन अगर आपके पास यह आपके .aspx पृष्ठ में है:


फिर आपका jQuery आसानी से उस नियंत्रण को ढूंढ सकता है, भले ही यह मास्टर पेज प्रतिपादन द्वारा उलझा हुआ हो, इस तरह:

$("[id$=txtExample]")

$ = ऑपरेटर स्ट्रिंग के अंत से मेल खाता है और नाम मैंगलिंग हमेशा सामने है। एक बार ऐसा करने के बाद, आप इस तरह की वास्तविक उलझन आईडी प्राप्त कर सकते हैं:

$("[id$=txtExample]").attr("id")

और फिर पार्स करें कि वैसे भी आप फिट देखते हैं।

संपादित करें: यह एक आसान तरीका है, लेकिन यह प्रत्येक नियंत्रण को अपनी पुरानी आईडी के समान ही देने के बजाय प्रदर्शन प्रदर्शन से अधिक हो सकता है।

इस लेख को देखें कि जेफ ने एक और jQuery अनुकूलन प्रश्न पर एक लिंक पोस्ट किया है:

jQuery: चयनकर्ताओं का प्रदर्शन विश्लेषण

0
जोड़ा
यदि आप वेबफॉर्म का उपयोग शुरू करने के लिए कर रहे हैं, तो बाधाएं हैं कि आप वास्तव में प्रदर्शन जैसी चीजों के बारे में बहुत अधिक परवाह नहीं करते हैं।
जोड़ा लेखक nathanchere, स्रोत

आप अपने नियंत्रण में एक अनन्य विशेषता संलग्न कर सकते हैं (मुझे यकीन नहीं है कि आप बेस वेब नियंत्रणों को विस्तार किए बिना ऐसा कर सकते हैं; एक त्वरित खोज केवल यह खुलासा किया ) और फिर" तत्व [विशेषता: मान] "चयनकर्ता का उपयोग करें।

0
जोड़ा

आप विस्तारित कक्षा में नियंत्रण के अनन्यनाम और/या क्लाइंट आईडी गुणों को ओवरराइड भी कर सकते हैं और वास्तविक आईडी वापस कर सकते हैं।

MyTextBox : Web.UI.TextBox
{
   //This modifies the generated 'name' attribute
    override UniqueID { get { return ID; } }

   //This modifies the generated 'id' attribute
    override ClientID { get{ return ID; } }
}
0
जोड़ा

There are a lot of ways to select elements with jQuery. You could do careful Tag/ClassName selection for one.
I don't know of any way to mess around with the id's themselves until ASP.NET 4.0. Of course you could always give the ASP.NET MVC Framework a try.

0
जोड़ा

You can use myControlId = "<%= myControl.ClientID %>"; to output the (non-friendly) id used to reference it in Javascript.

0
जोड़ा
यह है कि जावास्क्रिप्ट मेरे .aspx पृष्ठ में इनलाइन है, लेकिन मेरा एक अलग .js फ़ाइल होगी जो 'पार्स नहीं मिलेगी।
जोड़ा लेखक Blankman, स्रोत
var controlId = "<% = myControl.ClientID%>" के बारे में कैसे?
जोड़ा लेखक David Kemp, स्रोत

यद्यपि मैंने उस नए "विशेष डीएल" के बारे में नहीं सुना है, लेकिन आप एक साधारण तरीके से बात करने के लिए उपयोग करेंगे

var myControlId; 

अपनी अलग जेएस-फाइल में और उसके बाद क्लाइंट आईडी को उस var को aspx/ascx में असाइन करें।

मैं भी सर्वर आईडी से नफरत करता हूं: एस ... एएसपी.नेट एमवीसी उन सभी चीजों का समाधान है जो मुझे एएसपीनेट वेबफॉर्म (व्यूस्टेट ... इत्यादि) से परेशान करते हैं।

0
जोड़ा

$ get ('myId') आज़माएं। मुझे लगता है कि यह गैर HTML दस्तावेज़ों में तत्व का चयन करने का तरीका है।

0
जोड़ा