Кодировка HTML для метода расширения HtmlHelper - PullRequest
10 голосов
/ 12 декабря 2010

Прежде всего я использую MVC 3 RC1 с движком Razor View. У меня есть вспомогательное расширение HTML, которое выглядит так:

public static string TabbedMenuItem(this HtmlHelper htmlHelper, string text, string actionName, string controllerName) {
    StringBuilder builder = new StringBuilder();
    builder.Append("<li>");

    builder.Append(text);

    builder.Append("</li>");
    return builder.ToString();
}

А на виде это называется так:

@Html.TabbedMenuItem("Home", "Index", "Home")

Проблема, с которой я столкнулся, заключается в том, что MVC автоматически кодирует результат HTML в представлении, поэтому все, что я получаю, - это закодированная версия строки:

<li>Home</li>

Кто-нибудь знает, как отключить автоматическое кодирование для ваших вспомогательных HTML-расширений?

Спасибо заранее Andy

Ответы [ 2 ]

21 голосов
/ 12 декабря 2010
public static IHtmlString TabbedMenuItem(this HtmlHelper htmlHelper, string text, string actionName, string controllerName)
{
    StringBuilder builder = new StringBuilder();
    builder.Append("<li>");

    builder.Append(text);

    builder.Append("</li>");
    return MvcHtmlString.Create(builder.ToString());
}

Использовать возвращаемое значение IHtmlString. Надеюсь, что это поможет.

0 голосов
/ 03 марта 2012

Использование TagBuilder

...