2012-06-18 8 views
0

Я это внутри UserControl в моей ASPX:Почему ClientID не оценивает?

<asp:TextBox TextMode="MultiLine" onkeydown="textCounterLatest('<%=txtContent.ClientID%>' , '<%=remLen.ClientID %>', 500);" 
       onkeyup="textCounterLatest('<%=txtContent.ClientID%>' , '<%=remLen.ClientID %>', 500);" ID="txtContent" MaxLength="500" 
       runat="server" Height="85px" Width="100%"></asp:TextBox> 

Но это ClientId не оценки. Вместо этого генерируется HTML:

<textarea style="height:85px;width:100%;" onkeyup="textCounterLatest('&lt;%=txtContent.ClientID%&gt;' , '&lt;%=remLen.ClientID %&gt;', 500);" onkeydown="textCounterLatest('&lt;%=txtContent.ClientID%&gt;' , '&lt;%=remLen.ClientID %&gt;', 500);" id="ctl00_ContentPlaceHolder1_GridView2_ctl02_ucTaxAnswer_txtContent" cols="20" rows="2" name="ctl00$ContentPlaceHolder1$GridView2$ctl02$ucTaxAnswer$txtContent"></textarea> 

Может ли кто-нибудь помочь мне?

ответ

1

Попробуйте

<asp:TextBox TextMode="MultiLine" onkeydown='<%= "textCounterLatest(\"" + txtContent.ClientID + "\", \"" + remLen.ClientID + "\")" %>'     ID="txtContent" MaxLength="500" runat="server" Height="85px" Width="100%"></asp:TextBox> 
+0

Вы смешно. Если бы я мог это сделать, я бы сделал это. У меня есть много usercontrols, и этот элемент управления находится внутри этого элемента управления. – Jaggu

+0

Вам нужно будет добавить jquery и прикрепить эти события javascript – fenix2222

+0

Хм, это мое последнее средство. Я пытаюсь это только сейчас. – Jaggu

0

код не обрабатывается, потому что внутри текста буквального в разметке.

Мой первый выбор для обхода - это «статический» ClientIDMode. Если это не произойдет (скажем, внутри элемента данных базы данных или в более раннем коде), у меня будет объект javascript в заголовке, посвященный главным образом идентификаторам clientID, и ссылайтесь на него везде в моей разметке html/javascript.

1

Поскольку вы уже находитесь в блоке кода ASP.NET, он ускользает от XML. так как вы находитесь в блоке кода просто сделать нормальный конкатенации и вы должны быть хорошо:

onkeyup="textCounterLatest('<%=txtContent.ClientID%>' , '<%=remLen.ClientID %>', 500);" 

в

onkeyup="textCounterLatest('" + txtContent.ClientID + "' , '" + remLen.ClientID + "', 500);" 
+0

Не работает. Я сразу получаю страницу с ошибкой на моем сайте. – Jaggu

+0

извините, что мои плохие мои веб-формы, по-видимому, немного ржавые, я опубликовал новый ответ –

0

Вы могли бы сделать что-то подобное в истинных WebForms моды в коде позади:

txtContent.Attributes.Add("onkeyup", string.Format("textCounterLatest('{0}' , '{1}', 500);", txtContent.ClientID, remLen.ClientID)); 

Я признаю его чрезвычайно неудобным по сравнению с любым другим языком разработки веб-сайтов, но добро пожаловать в веб-формы!

Смежные вопросы