C# 如何防止html编码内容中的HtmlGenericControl?

C# 如何防止html编码内容中的HtmlGenericControl?,c#,asp.net,dotnetnuke,html-encode,htmlgenericcontrol,C#,Asp.net,Dotnetnuke,Html Encode,Htmlgenericcontrol,我正在使用C#编写一个asp.net站点(实际上是一个DotNetNuke模块)。在代码隐藏中,我试图创建一个标记,在其中设置所需的js变量,然后将其附加到HMTL。js变量是图像文件的相对URL的(文字)数组。由于数组包含字符串,因此每个项都必须用引号括起来 问题是,和之间的字符串在某个地方被自动HTMLENCODE编码,因此每个数组项周围的引号都被替换为“。这似乎是在呈现HtmlGenericControl时发生的。DotNetNuke可能是罪魁祸首吗?有人能建议一种解决方法吗 我的当前代码

我正在使用C#编写一个asp.net站点(实际上是一个DotNetNuke模块)。在代码隐藏中,我试图创建一个
标记,在其中设置所需的js变量,然后将其附加到HMTL
。js变量是图像文件的相对URL的(文字)数组。由于数组包含字符串,因此每个项都必须用引号括起来

问题是,
之间的字符串在某个地方被自动HTMLENCODE编码,因此每个数组项周围的引号都被替换为
。这似乎是在呈现
HtmlGenericControl
时发生的。DotNetNuke可能是罪魁祸首吗?有人能建议一种解决方法吗

我的当前代码(从我控件中的
Page\u Load
处理程序运行):

请看如何使用节点的属性,而不是InnerText属性


InnerHtml属性不会自动对HTML实体之间的特殊字符进行编码。HTML实体允许您显示特殊字符,例如浏览器通常会解释为具有特殊含义的<字符。<字符将被解释为标记的开头,并且不会显示在页面上。要显示<字符,您将需要使用我建议的实体,为您的变量使用小写名称。这令人困惑。感谢您的提示。我并不真正习惯.net,在意识到.net开发人员倾向于使用大写对象属性名称后,我开始在所有内容中使用大写。我想这是一种过度更正的情况!
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);