c# - ASP.Net: ग्राहक नियंत्रण के कोड-पीछे में क्लाइंटआईड सही नहीं है




user-controls clientid (3)

निम्नलिखित कोड काम नहीं करता है मार्कअप एक उपयोगकर्ता नियंत्रण में है और मुझे लगता है कि क्लाइंटआईडी ने पाठ बॉक्स आईडी के लिए गलत उपसर्ग वापस कर दिया है।

मार्कअप:

<INPUT id="txtName" runat="server" maxlength="50" style="WIDTH:100px">
<INPUT type="button" value="Find Your Doctor" id="btnFind" runat="server"
      style="MARGIN-LEFT:10px;WIDTH:130px">

कोड के पीछे:

btnFind.Attributes.Add("onClick",string.Format("DoctorLink
        ('{0}',document.getElementById('{1}').value,{2});",
        row["ZipCode"],
        txtName.ClientID));

ब्राउज़र में परिणाम:

<input name="DoctorsMainArea1$ctl01$txtName" type="text"
   id="DoctorsMainArea1_ctl01_txtName" maxlength="50" style="WIDTH:100px" />

<input name="DoctorsMainArea1$ctl01$btnFind" type="button" 
   id="DoctorsMainArea1_ctl01_btnFind" value="Find Your Doctor" style="MARGIN-
   LEFT:10px;WIDTH:130px" onClick="PrepareDoctorLink('90210',
   document.getElementById('DoctorsMainArea1_ctl00_txtName').value);" />

जैसा कि आप देख सकते हैं, जावास्क्रिप्ट कॉल के लिए पैरामीटर DoctorsMainArea1_ctl00_txtName , लेकिन इनपुट तत्व का वास्तविक आईडी DoctorsMainArea1_ctl01_txtName

इसे ठीक करने के लिए कोई भी विचार? jQuery? मुझे इस बात पर ज्यादा दिलचस्पी नहीं है कि क्या हो रहा है (शायद इस पृष्ठ पर एक और नियंत्रण है जो हस्तक्षेप कर रहा है), लेकिन समस्या को हल करने का एक और मजबूत तरीका है।


आपको उस कोड को आगे बढ़ाना चाहिए जो आपके पृष्ठ या उपयोगकर्ता-नियंत्रण में प्रीरेन्डर इवेंट (या ओपररेंडर ओवरराइड) के बटन पर ऑनक्लिक विशेषता जोड़ता है। यह संभवतः क्लाइंटआईड सही होगा


एक तेज़ समाधान:

btnFind.Attributes.Add("onClick",string.Format("DoctorLink
        ('{0}',document.getElementById('{1}').value,{2});",
        row["ZipCode"],
        "DoctorsMainArea1_ctl01_" + txtName.ClientID));

ऐसा इसलिए होता है क्योंकि आपके पास अपने पृष्ठ में कहीं एक सामग्री प्लेसहोल्डर है


मुझे पता नहीं है कि आप किस asp.net संस्करण का उपयोग कर रहे हैं, लेकिन 4.0 में आप किसी भी सर्वर नियंत्रण क्लाइंटआईडीएमोड = "स्थिर" के अंदर घोषित कर सकते हैं और यह आपको ब्राउज़र में सटीक आईडी देगा।

उदाहरण:

<asp:Textbox id="txtName" runat="server" ClientIdMode="static"/>

दूसरों को अनुमान लगाया जा सकता है, उत्तराधिकार होता है और इसका उपयोग क्लाइंटआईडीआरओफिक्स के साथ किया जा सकता है। पृष्ठ स्तर पर और यहां तक ​​कि मास्टर पृष्ठ पर और यहां तक ​​कि वेब.config फ़ाइल में भी उपयोग किया जा सकता है।

Web.config फ़ाइल पर उदाहरण:

<system.web>
<Pages clientIDMode="predictable"/>
other system web properties
</system.web>

रेड के ब्लॉग लिंक टेक्स्ट पर आप इसके बारे में और भी पढ़ सकते हैं। यह काफी अच्छा है यद्यपि।





clientid