私はC#を使ってasp.netサイト(実際にはDotNetNukeモジュール)を書いています。コードビハインドから、私は<script>
タグを作成しようとしています。ここで、必要なjs変数を設定し、それをHMTL <head>
に追加します。 js varはイメージファイルの相対URLの(リテラル)配列です。配列には文字列が含まれているため、各項目は引用符で囲む必要があります。各配列項目の前後に引用符を"
で置換されているので、問題があるHtmlGenericControlのhtmlエンコードコンテンツからの保護方法を教えてください。
、<script>
と</script>
の間の文字列が自動的に、どこかHtmlEncodedされています。これはHtmlGenericControl
がレンダリングされたときに発生するようです。 DotNetNukeが原因だろうか?誰かが回避策を提案できますか? (私のコントロールにPage_Load
ハンドラから実行されている)
私の現在のコード:ノードではなく、InnerTextプロパティプロパティのInnerHtmlプロパティを使用しての
HtmlGenericControl PreviewDataScriptTag = new HtmlGenericControl("script");
PreviewDataScriptTag.Attributes.Add("type", "text/javascript");
StringBuilder PreviewDataScriptCode = new StringBuilder();
PreviewDataScriptCode.Append("var preview_imgs = [");
string pathPrefix = @"""";
string pathSuffix = @""",";
foreach (string path in this.DocPreviewImages)
{
PreviewDataScriptCode.Append(pathPrefix + PreviewUrlBase + Path.GetFileName(path) + pathSuffix);
}
// Remove last comma from js code
PreviewDataScriptCode.Remove(PreviewDataScriptCode.Length-1, 1);
PreviewDataScriptCode.Append("];");
PreviewDataScriptTag.InnerText = PreviewDataScriptCode.ToString();
Page.Header.Controls.Add(PreviewDataScriptTag);
変数に小文字の名前を使用することをおすすめします。これは読みにくいです。 – Amy
チップをありがとう。私は実際に.NETに慣れていないし、大文字の大文字を大文字にする傾向があることを実感した後、大文字を使い始めた。私はそれが過補正のケースだと思います! – bfavaretto