Я в настоящее время пишу маленькую систему шаблонной обработки в 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, но я хочу так или иначе выйти из них так, чтобы они могли быть. Естественно я считал Интернет для ответа, но поскольку Бритва является довольно новой нет очень там для выручения меня.
У кого-либо есть идея того, как сделать это?
Вам необходимо создайте реализацию IHtmlString
, содержащую ваш исходный HTML-код.
Razor планирует создать вспомогательный метод, который сделает это за вас, но, AFAIK, его пока нет, поэтому я считаю, что вам нужно создать свой собственный класс, реализующий интерфейс и возвращающий ваш HTML из GetHtmlString ()
метод.
РЕДАКТИРОВАТЬ : вы можете использовать класс HtmlString
.
Вы можете изменить свой словарь topHeader
на IHtmlString
вместо String
s, либо оставить код как есть, но обернуть его HtmlString
в представлении Razor:
<tag>@new HtmlString(topHeader[x])</tag>
Убедитесь, что правильно экранированы все специальные символы, не относящиеся к HTML.
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>");
Должно получиться.