为什么ClientID没有评估?

时间:2012-06-18 04:08:39

标签: c# asp.net .net

我在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( '&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>

有人可以帮帮我吗?

4 个答案:

答案 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!