我有一个带有一些模板内容的.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%><br /><%Address2%>, <%Address3%><br/><%Postcode%><br /><br />
这是我的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>";
任何帮助表示赞赏
答案 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编码的原因。