0

私はこれを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

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です。それができない場合(たとえば、データバインドされたアイテム内または古いコード内)、ヘッダーに主にclientID専用のjavascriptオブジェクトがあり、html/javascriptマークアップのどこでもそれを参照します。

于 2012-06-18T04:15:05.080 に答える
0

背後にあるコードで、真のWebフォーム形式でこのようなことを行うことができます。

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

他のWeb開発言語と比較して非常に厄介であることは認めますが、Webフォームへようこそ!

于 2012-06-18T04:34:12.323 に答える