これはうまく機能していますが、これは恐ろしいハックのどれくらいか分かりません。私がしたことが大丈夫かどうか、そしてなぜなのか誰にでも教えてもらえますか?ひらめきテンプレートからjavascript文字列
私はRazorとJavaScriptの間でテンプレートを共有する必要があったので、それをサーバー側と他のクライアント側で使用することができました。だから、ここで私がやったことです:
Func<dynamic, HelperResult> sampleTemplate =
@<span>Sample markup @item.Something</span>;
その後、私はこのような私の見解で私のテンプレートを使用:
for(int idxSample = 0; idxSample < Model.Number; idxSample++) {
@sampleTemplate(new { Something = "" })
}
そして、私はこれをしなかったのjavascriptのために:だから
<script type="text/javascript">
var someJsTemplate = "" +
<r><[!CDATA[@sampleTemplate(new { Something = "" })]]></r>;
</script>
私が後でそれを必要とするときはsomeJsTemplate
を付けることができた。だから、判決は何ですか?誰かがそれを行うためのよりよい方法を見ていますか?それとも大丈夫ですか?
編集:
今、私はこれを使用することはできません。 FireFoxでは正常に動作しますが、Chromeではハックを許可していません。どんな助け?
サーバー側にHTMLを保存することについては、まあ、それは剃刀のビューですよね?したがって、それはサーバー側であり、HTMLを含んでいます。しかし、JavaScriptStringEncodeについては、このチップのおかげで非常に感謝しています!何が起こったのか、私はJavaScriptStringEncodeがやっていることをほぼ実践するヘルパーを書いたばかりです。もし私が知っていたら、私はある時間を救ったかもしれない...とにかく、タンク! – rdumont
@rdumont、ええ 'JavaScriptStringEncode'はあなたのサイトをXSSに喜んでくれる悪い人からあなたを守ります:-) –