Как бы я сказал браузеру отображать строку, а не отображать ее? - PullRequest
1 голос
/ 14 декабря 2010

У меня есть этот метод расширения, который я создал, и он возвращает строку всех категорий в моей базе данных в виде гиперссылок. Большой!

@Html.MyMenu()

Проблема в том, что ссылки отображаются в виде текста, а не в виде гиперссылок.

При просмотре исходного кода вижу:

<div id="menucontainer">

                &lt;a href=&quot;/Anuncio/Electronics&quot;&gt;Electronics&lt;/a&gt;&lt;a href=&quot;/Anuncio/Clothes&quot;&gt;Clothes&lt;/a&gt;&lt;a href=&quot;/Anuncio/Domestic&quot;&gt;Domestic&lt;/a&gt;&lt;a href=&quot;/Anuncio/Garden&quot;&gt;Garden&lt;/a&gt;

            </div>

Я думаю, что могу ошибаться, но я помню, что в MVC2 (с использованием механизма представления по умолчанию) у вас было:

<%: this is rendered, right? %>

Или я ошибаюсь? В любом случае, я использую MVC3 и движок Razor. Большое спасибо за вашу помощь, ребята. Мне действительно нравится узнавать как можно больше об этом.

Ответы [ 4 ]

2 голосов
/ 14 декабря 2010

Razor по умолчанию экранирует HTML.

Чтобы избежать этого, сделайте что-то вроде этого:

Запись / вывод строк HTML без экранирования

1 голос
/ 14 декабря 2010

В RC2 новый метод с именем @ HTml.Raw должен соответствовать этому.

Или вы можете изменить MyMenu, чтобы он возвращал HtmlString или MvcString, а не просто строку.

0 голосов
/ 14 декабря 2010

RC2 поддерживает @ Html.Raw () для вывода необработанного HTML

С Объявление Скотта Гатри на RC2

В RC2 мы добавляем вспомогательный метод Html.Raw (), который можно использовать для явного указания того, что вы не хотите кодировать HTML-код в выходных данных, а вместо этого хотите отображать содержимое «как есть»

0 голосов
/ 14 декабря 2010

Ваш метод расширения должен возвращать MvcHtmlString для правильного отображения на вашей странице, используя <%: %> Если он возвращает строку, все угловые скобки и другие специальные символы html будут закодированы в формате html.

...