我正在使用C#編寫一個asp.net網站(實際上是一個DotNetNuke模塊)。從代碼隱藏,我試圖創建一個<script>
標籤,我設置所需的js變量,然後將其附加到HMTL <head>
。 js var是圖像文件的相對URL的(文字)數組。由於數組包含字符串,因此每個項目都必須用引號引起來。如何防止HTML編碼內容的HtmlGenericControl?
問題是,<script>
和</script>
之間的字符串正在某處自動進行HtmlEncoded,因此每個陣列項目周圍的引號將被替換爲"
。這似乎發生在HtmlGenericControl
呈現時。 DotNetNuke可能是罪魁禍首嗎?有人可以提出一個解決方法嗎?
我當前的代碼(從Page_Load
處理程序在我的控制運行):
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,並在實現後開始使用大寫的.net開發人員傾向於使用大寫*對象屬性名稱*。我想這是一個過度糾正的情況! – bfavaretto