2010-12-10 12 views
2

コントロールのプロパティを設定するとき、私はASP.NET Webアプリケーションを持っていると私はこれを行う特定の時点で問題が発生します。 これは、いくつかのタグのイベントでjavascriptを設定することがわかります。ページがrederedされている場合さて問題は、私のパラメータは次のように見えることである:ASP.NET引用文字エンコーディングは

<textarea onfocus="document.getElementById(&#39;myvalue&#39;).value = &#39;Hello&#39;"></textarea> 

私は私が設定しようとしているこのテキストボックスは、リストビューのInsertItemTemplateの内側に配置され、それはにそう簡単ではないことを正確にしなければなりません初期化する。このような理由から、私は自分のテキストボックスのloadイベントハンドラの内部にある初期化コードを挿入しました。私はあなたに言うことができます:このコードがページに自由に配置されたテキストボックスを参照し、このコードをページのロードイベントハンドラから呼び出した場合、これはうまくいくでしょう。しかし、私はこの特定の場合に行う方法を知らない。

また、このような問題を処理するWebcntrolを作成する可能性も検討しています。私は本当にこの場合のベストプラクティスを知らない。

+0

これは明らかにHTMLでエンコードされています。 "stringparameterforjscript"とは何ですか?HTMLはどのようにレンダリングされますか? –

+0

'textarea'の' onfocus'属性はどうやって設定していますか?私はあなたの 'mycontrol.stringparameterforjscript'ではなく、' textarea'コントロールを通してエンコーディングが起こっていると思います。 – bdukes

+0

@bdukes私はそうは思わない、ASP.NETコントロールライブラリのプロパティを通過すると思う問題はそこにあります。どこかに設定するエスケープシーケンスがなければなりません。それはわかりません... :( – Andry

答えて

1

は、私はあなたの割り当ての両方の文字列リテラルに@を必要とし、スラッシュを削除するかもしれないと思う:

mycontrol.stringparameterforjscript = @"document.getElementById('" + myotherparam + @"').value = 'Hello'"; 

EDIT私はそれをやった方法

:オン

。 aspx:

<asp:Textbox ID="tbTest" runat="server" TextMode="MultiLine" /> 

コード:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string myotherparam = "paramval"; 
    tbTest.Attributes.Add("onfocus", @"document.getElementById('" + myotherparam + @"').value = 'Hello'"); 
} 

結果の出力:

<textarea name="tbTest" rows="2" cols="20" id="tbTest" onfocus="document.getElementById('paramval').value = 'Hello'"></textarea> 
+0

これはうまくいかず、最終出力にも印刷されます...しかし、 – Andry

+0

申し訳ありませんが、スラッシュも文字列から削除する必要があります。私の編集した回答を参照してください。 – Ender

+0

私はテストしよう...そうだね:) – Andry

関連する問題