2010-12-14 6 views
1

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

@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. Большое спасибо за помощь ребятам. Мне очень нравится учиться, насколько я могу об этом.

+0

Пожалуйста, дайте мне знать, если вам нужно увидеть код в представлении. Благодаря! – 2010-12-14 13:09:55

ответ

2

Razor избегает HTML по умолчанию.

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

Writing/outputting HTML strings unescaped

+0

Спасибо, это помогло мне решить мою проблему. Вот мое решение: @ (новый HtmlString (@ Html.MyMenu())) – 2010-12-14 13:19:30

+0

Но вы также можете сделать 'Html.MyMenu()' return 'HtmlString'! Думаю, было бы лучше ... Если вам это не понадобится, чтобы вернуть правильную строку (например, для повторного использования ее где-то еще). – rsenna

0

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

+0

Я упомянул только скобки, чтобы проиллюстрировать то, что я пытаюсь выполнить. Вы не можете использовать скобки MVC2 на двигателе Razor. – 2010-12-14 13:16:46

1

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

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

+0

Я не могу найти этот метод в MSDN, и Google не возвращает никаких результатов. Можете ли вы поделиться ссылкой? – 2010-12-14 13:22:28

+0

@ сергей уверен! http://stackoverflow.com/questions/4281424/asp-net-mvc-razor-output-html-string-non-escaped/4282073#4282073 – Zote

0

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

От Scott Guthrie's RC2 anouncement

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

 Смежные вопросы

  • Нет связанных вопросов^_^