Как бы я сказал браузеру отображать строку, а не отображать ее?
У меня есть этот метод расширения, который я создал, и он возвращает строку всех категорий в моей базе данных в виде гиперссылок. Большой!
@Html.MyMenu()
Проблема в том, что ссылки отображаются как текст, а не как гиперссылки.
При просмотре исходного кода я вижу:
<div id="menucontainer">
<a href="/Anuncio/Electronics">Electronics</a><a href="/Anuncio/Clothes">Clothes</a><a href="/Anuncio/Domestic">Domestic</a><a href="/Anuncio/Garden">Garden</a>
</div>
Я думаю, что могу ошибаться, но я помню, что в MVC2 (с использованием механизма представления по умолчанию) у вас было:
<%: this is rendered, right? %>
Или я ошибаюсь? В любом случае, я использую MVC3 и движок Razor. Большое спасибо за вашу помощь, ребята. Мне действительно нравится узнавать как можно больше об этом.
4 ответа
Razor по умолчанию экранирует HTML.
Чтобы избежать этого, пожалуйста, сделайте что-то вроде этого:
В RC2 к этому должен быть добавлен новый метод @HTml.Raw.
Или вы можете изменить MyMenu, чтобы он возвращал HtmlString или MvcString, а не просто строку.
RC2 поддерживает @Html.Raw() для вывода необработанного HTML
Из объявления RC2 Скотта Гатри
В RC2 мы добавляем вспомогательный метод Html.Raw (), который можно использовать, чтобы явно указать, что вы не хотите, чтобы HTML-кодировал ваш вывод, и вместо этого хотите визуализировать содержимое "как есть".
Хорошо ваш метод расширения должен возвращать MvcHtmlString
для того, чтобы правильно отображаться на вашей странице, используя <%: %>
Если он возвращает строку, все угловые скобки и другие специальные символы html будут закодированы в формате html.