2009-01-29 12 views
5

द्वारा छेड़छाड़ किए गए HTML तत्वों की आईडी और नाम विशेषताओं में मुझे अपने सी # एएसपी.NET एप्लिकेशन में कोई समस्या है, जहां आईडी और नाम टैग क्रमशः "मेनव्यू_" और "मेनव्यू $" उपसर्ग के साथ रनटाइम पर संशोधित होते हैं। तो मेरी कोड:एएसपी.NET

<asp:Button ID="OKToContinueCheckInButton" runat="server" CausesValidation="False" Visibility="false" Style="display: none" OnClick="btnOKToContinueCheckIn" /> 

<script type="text/javascript"> 
<!-- 
    var answer = confirm("Some Warning"); 
    if (answer) 
     document.getElementById('OKToContinueCheckInButton').click(); 
// --> 
</script> 

हो जाता है:

<input type="submit" name="MainView$OKToContinueCheckInButton" value="" id="MainView_OKToContinueCheckInButton" Visibility="false" style="display: none" /> 

<script type="text/javascript"> 
<!-- 
    var answer = confirm("Some Warning"); 
    if (answer) 
     document.getElementById('OKToContinueCheckInButton').click(); 
// --> 
</script> 

getElementID() अशक्त रिटर्न क्योंकि नाम बदल गया है। क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है और यदि आईडी और नाम मानों को बदलने से संभवतः इसे अक्षम करने का कोई तरीका है। धन्यवाद!

-Sephrial

उत्तर

10

मुझे लगता है कि यह आप में मदद मिलेगी ...

<script type="text/javascript"> 
<!-- 
    var answer = confirm("Some Warning"); 
    if (answer) 
     document.getElementById('<%= OKToContinueCheckInButton.ClientID %>').click(); 
// --> 
</script> 

यह बात यह है कि इस का एक मूलभूत हिस्सा है चाल

<%= OKToContinueCheckInButton.ClientID %> 
+1

के साथ काम करने के लिए आसान है कि वह क्या कहा हैं: $ = का उपयोग करके चयनकर्ता (साथ समाप्त होता है), इस नोए समस्या हो जाएगा! –

1
<asp:Button ID="OKToContinueCheckInButton" runat="server" CausesValidation="False" Visibility="false" Style="display: none" OnClick="btnOKToContinueCheckIn" /> 

<script type="text/javascript"> 
<!-- 
    var answer = confirm("Some Warning"); 
    if (answer) 
     document.getElementById(<%=OKToContinueCheckInButton.ClientID %>).click(); 
// --> 
</script> 
3

करता है Asp .Net फॉर्म मॉडल काम के तरीके।

आईडी बदल रहे हैं ताकि आप आईडी उपयोगकर्ता नियंत्रण, कस्टम नियंत्रण, रिपीटर्स आदि

आप सिरिल की विधि का उपयोग कर सकते में अद्वितीय रखने के बारे में चिंता करने की जरूरत नहीं है। मुझे यह भी पता चलता है कि JQuery इस मॉडल को बहुत अच्छी तरह से अनुकूल करता है क्योंकि आप आसानी से दस्तावेज़ में अपनी कक्षा या स्थिति द्वारा नियंत्रण का संदर्भ दे सकते हैं।

1

अपनी स्क्रिप्ट को पीछे कोड से लिखें। इसे स्टार्ट अप स्क्रिप्ट के रूप में पंजीकृत करें, और ऑब्जेक्ट की क्लाइंट आईडी का उपयोग करें।

System.Text.StringBuilder script = new System.Text.StringBuilder(); 
script.Append("var answer = confirm('Some Warning');"); 
script.Append("if (answer)"); 

// The client ID will be what is put in the browser so it will find it. 
script.AppendFormat("document.getElementById('{0}').click();", this.btnSomeButton.ClientID); 

// Hook this up to the button 
this.btnSomeButton.OnClientClick = script.ToString(); 
+0

आप उसे ऐसा कुछ क्यों करेंगे जो अनजान है? –

1

आप इस तरह ClientID संपत्ति का उपयोग करना चाहिए:

<asp:Button ID="OKToContinueCheckInButton" runat="server" CausesValidation="False" Visibility="false" Style="display: none" OnClick="btnOKToContinueCheckIn" /> 

<script type="text/javascript"> 
<!-- 
    var answer = confirm("Some Warning"); 
    if (answer) 
     document.getElementById(<%=OKToContinueCheckInButton.ClientID%>).click(); 
// --> 
</script> 
3

अच्छी खबर ASP.Net 4.0 इस समस्या को हल करेंगे।

http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

+0

ओएमजी भगवान का शुक्र है - यह एंटी-फीचर मेरे दिमाग को अपोप्लेक्सी के साथ आधे में तोड़ देता है - शर्म की बात है कि उनका फिक्स उतना ही गुस्सा है जितना कि यह है, लेकिन यह एक शुरुआत है – annakata

0

अपनी प्रतिक्रियाओं के सभी के लिए धन्यवाद, मुझे लगता है कि मुझे समझ में क्यों मान ले ली है। हालांकि, जब मैंने ऊपर दिए गए समाधानों का प्रयास किया, तो यह एक त्रुटि देता है क्योंकि यह निम्न HTML को '$' के बजाय '_' के साथ उत्पन्न करता है। मैं उपयोग कर रहा था, document.getElementById (<% = OKToContinueCheckInButton.ClientID%>)। क्लिक करें();

<input type="submit" name="MainView$OKToContinueCheckInButton" value="" id="MainView_OKToContinueCheckInButton" Visibility="false" style="display: none" /> 

<script type="text/javascript"> 
<!-- 
    var answer = confirm("Some Warning"); 
    if (answer) 
     document.getElementById(MainView_OKToContinueCheckInButton).click(); 
// --> 
</script> 
2

मुझे लगता है कि आप सिंगल कोट्स भूल गया:

document.getElementById(<%= OKToContinueCheckInButton.ClientID %>).click(); 

होना चाहिए:

document.getElementById('<%= OKToContinueCheckInButton.ClientID %>').click(); 
1

आप jQuery का उपयोग करने के लिए तैयार हैं, तो यह बिल्कुल एक समस्या नहीं है, और आप नाम बदलने के बारे में चिंता करने की ज़रूरत नहीं है।

if (answer) 
    $("a[id$='MainView_OKToContinueCheckInButton']:first").click(); 

jQuery चयनकर्ताओं बहुत