HTML自动编码

时间:2011-10-16 16:21:37

标签: asp.net html encoding

我有一个带有一些模板内容的.htm文件,看起来有点像这样:

<div>
 <h1>My template</h1>
 <div>
   <%replacable%>
 </div>
</div>

我让我的助手阅读:

string str = Helper.ReadFile("~/Templates/myTemplate.htm");

我替换了我的东西:

str = str.Replace("<%replacable%>", "tadah!");

我设置了我的编辑器:

AjaxHTMLEditor.Content = str;

当它到达编辑器时,它都是血腥的废话:(

%Address1%&gt;&lt;br /&gt;&lt;%Address2%&gt;, &lt;%Address3%&gt;&lt;br/&gt;&lt;%Postcode%&gt;&lt;br /&gt;&lt;br /&gt;

这是我的readfile代码:

public static string ReadFile(string filename)
{

    string contents = "";

    filename = HttpContext.Current.Server.MapPath(filename);

    if (File.Exists(filename))
    {
        StreamReader sr;
        sr = File.OpenText(filename);

        contents = sr.ReadToEnd();
    }

    return contents;
}

为什么我的HTML被编码????

如果我用一个直接字符串设置AjaxHTMLEditor,那就没问题了:

AjaxHTMLEditor.Content = "<div> <h1>My template</h1> <div>   tadah! </div> </div>";

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:4)

  

我替换了我的东西:

str.Replace("<%replacable%>", "tadah!");

你不是在这里替换任何东西。您没有返回值。在.NET中,字符串是不可变的,因此.Replace方法返回新值。

如果你想替换,你会这样做:

var filename = HttpContext.Current.Server.MapPath("~/Templates/myTemplate.htm");
string str = File.ReadAllText(filename).Replace("<%replacable%>", "tadah!");

在此阶段,str变量将包含未编码的值。

接下来会发生什么将在很大程度上取决于您使用此str变量所做的事情。例如,如果AjaxEditor.Content已经对HTML进行了编码(无论这个AjaxEditor是什么),这可能是您最终获得HTML编码的原因。

相关问题