2010-11-28 12 views
0
Iハイパーリンクコントロールとcodebhindで次やって

でJavaScriptを破壊:ASP.NETエンティティは分離コード

hlNonTerminal.Attributes [ "onclickの"] = String.Formatの(「highlightTokenUsage({0})。 "、非ターミナル);

が、 '文字はasp.netで置き換えると、ブラウザはこのようになっている:

< ID = "..." onclickの= "highlightTokenUsage(&#39; CITY &#39;);" > CITY </a >

これをオフにするか、バイパスするにはどうすればよいですか?これは、ユーザーコントロールの内部で発生しますが、それを含むページにはValidateRequest = "false"があります。

+1

なぜそれが欲しいですか? &#39はJavaScriptエンジンに渡される前にHTMLにアンエスケープされているので、あなたが遭遇している問題はこれではありません。 – erikkallen

+0

それは私のためにうまくいくようです。 hlNonTerminal.Attributes ["onclick"]でHtmlEncode()を置き換えている場所があるかどうか確認できますか? –

答えて

0

エンコーディングのメカニズムは、AttributeCollectionクラスの基になるRenderメソッドで実装されている(おそらく)ため、サーバーコントロールをオーバーライドして、レンダリングロジックを変更すると、それが変更されます。しかし、私は現在の実装がうまく動作するので、そうしないことを強くお勧めします。

あなたが私達に示した<a id="..." onclick="highlightTokenUsage(&#39;CITY&#39;);">CITY</a>のリンクは完全に有効です。コード&#39;は、highlightTokenUsageメソッドを呼び出す前に '文字'にデコードされるため、害はありません。

ところで、この種の属性操作は、コードビハインド(実際にはHTMLとJavaScriptコードを混ぜる)が「Unobtrusive Javascript」に反することに注意してください。

関連する問題