我正在使用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