0

我在我的 aspx 的用户控件中有这个:

<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

4 回答 4

1

尝试这个

<asp:TextBox TextMode="MultiLine" onkeydown='<%= "textCounterLatest(\"" + txtContent.ClientID + "\", \"" + remLen.ClientID + "\")" %>'                 ID="txtContent" MaxLength="500" runat="server" Height="85px" Width="100%"></asp:TextBox>
于 2012-06-18T04:13:51.227 回答
1

因为您已经在 ASP.NET 代码块中,所以它正在转义 XML。因为你在一个代码块中,所以只需进行正常的字符串连接,你应该没问题:

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

onkeyup="textCounterLatest('" + txtContent.ClientID + "' , '" + remLen.ClientID + "', 500);"
于 2012-06-18T04:16:11.817 回答
0

未评估代码,因为它位于标记中的文本文字内。

我的首选解决方法是“静态”ClientIDMode。如果做不到这一点(例如,在数据绑定项或旧代码中),我将在标头中有一个 javascript 对象,主要用于 clientID,并在我的 html/javascript 标记中的任何地方引用它。

于 2012-06-18T04:15:05.080 回答
0

您可以在后面的代码中以真正的网络表单方式执行类似的操作:

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

我承认它与任何其他 Web 开发语言相比都非常尴尬,但欢迎使用 Webforms!

于 2012-06-18T04:34:12.323 回答