Я пишу сайт asp.net (на самом деле, модуль DotNetNuke), используя C #. Исходя из кода, я пытаюсь создать тег <script>
, в котором я устанавливаю обязательную переменную js, а затем добавляю ее в HMTL <head>
. Js var - это (буквальный) массив относительных URL для файлов изображений. Поскольку массив содержит строки, каждый элемент должен быть заключен в кавычки.
Проблема в том, что строка между <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);