Форматирование строк в ASP.NET Razor - PullRequest
9 голосов
/ 27 июля 2010

В настоящее время я пишу небольшую систему шаблонов в ASP.NET, чтобы пользователи могли добавлять контент.Например, пользователь может ввести строку (тип переменной - строка).

topHeader[x] = "They think it's all over. It is now!";

Однако необходимо внести одно изменение - возможность добавить некоторые базовые теги HTML в этот контент, поэтому можно выполнить следующее.

topHeader[x] = "They think it's all over. <strong>It is now!</strong>";

или

topHeader[x] = "They think it's all over. <a title="Football News" href="URL">It is now!</a>";

Если вы сейчас добавляете такие строки в строки, они не отформатированы как HTML, но я хочу как-то избежать их, чтобы они могли быть.Естественно, я искал ответ в Интернете, но, поскольку Razor довольно нов, у меня мало что может помочь.

У кого-нибудь есть идеи, как это сделать?

Ответы [ 3 ]

9 голосов
/ 17 января 2011

Вспомогательный метод, который они добавили, называется Html.Raw (), и он намного чище .

Вот пример:

@Html.Raw("Hello <a>World</a>!")
9 голосов
/ 27 июля 2010

Вам нужно создать реализацию IHtmlString, содержащую ваш HTML-источник.

Razor планирует использовать вспомогательный метод, чтобы сделать это для вас, но, AFAIK, этопока нет, поэтому я считаю, что вам нужно создать собственный класс, который реализует интерфейс и возвращает HTML-код из метода GetHtmlString().
EDIT : вы можете использоватьHtmlString class.

Вы можете изменить словарь topHeader, чтобы он содержал IHtmlString s вместо String s, или вы можете оставить свой код как есть, но обернуть его в HtmlStringв представлении Razor:

<tag>@new HtmlString(topHeader[x])</tag>

Убедитесь, что правильно экранированы любые не-HTML специальные символы.

4 голосов
/ 27 июля 2010

SLaks - это правильно, но вам не нужно писать собственную реализацию IHtmlString, она встроена в System.Web и называется HtmlString.Итак:

topHeader[x] = new HtmlString("They think it's all over. <a title=\"Football News\" href=\"URL\">It is now!</a>");

Нужно сделать свое дело.

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