我在aspx中的usercontrol中有这个:
<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( '<%=txtContent.ClientID%>' , '<%=remLen.ClientID %>', 500);" onkeydown="textCounterLatest('<%=txtContent.ClientID%>' , '<%=remLen.ClientID %>', 500);" id="ctl00_ContentPlaceHolder1_GridView2_ctl02_ucTaxAnswer_txtContent" cols="20" rows="2" name="ctl00$ContentPlaceHolder1$GridView2$ctl02$ucTaxAnswer$txtContent"></textarea>
有人可以帮帮我吗?
答案 0 :(得分:1)
试试这个
<asp:TextBox TextMode="MultiLine" onkeydown='<%= "textCounterLatest(\"" + txtContent.ClientID + "\", \"" + remLen.ClientID + "\")" %>' ID="txtContent" MaxLength="500" runat="server" Height="85px" Width="100%"></asp:TextBox>
答案 1 :(得分:1)
因为您已经在ASP.NET代码块中,所以它正在转义XML。因为你在代码块中只是做正常的字符串连接,你应该没问题:
onkeyup="textCounterLatest( '<%=txtContent.ClientID%>' , '<%=remLen.ClientID %>', 500);"
到
onkeyup="textCounterLatest('" + txtContent.ClientID + "' , '" + remLen.ClientID + "', 500);"
答案 2 :(得分:0)
不评估代码,因为它位于标记的文本文字中。
我的首选方法是“静态”ClientIDMode。如果失败(比如,在数据绑定项或旧代码中),我会在标题中有一个主要用于clientID的javascript对象,并在我的html / javascript标记中引用它。
答案 3 :(得分:0)
你可以在后面的代码中以真正的webforms方式做这样的事情:
txtContent.Attributes.Add("onkeyup", string.Format("textCounterLatest('{0}' , '{1}', 500);", txtContent.ClientID, remLen.ClientID));
我承认与其他任何网络开发语言相比都非常尴尬,但欢迎使用webforms!