HTML кодируется автоматически - PullRequest
1 голос
/ 16 октября 2011

У меня есть файл .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;

и вот мой код чтения файла:

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 Ответ

4 голосов
/ 16 октября 2011

Я заменяю свои вещи:

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 в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...