2010-12-12 14 views
10

Przede wszystkim używam MVC 3 RC1 z silnikiem widoku Razor. Mam rozszerzenie HTML pomocnika, który wygląda tak:Kodowanie HTML dla metody rozszerzenia htmlHelper

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(); 
} 

I na widoku to się nazywa tak:

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

Problem mam jest to, że MVC jest automatycznie HTML kodujący doprowadzić do widzenia tak wszystko ja dostać jest zakodowaną wersję napisu:

<li>Home</li> 

Czy ktoś wie jak wyłączyć automatyczne kodowanie HTML rozszerzeń pomocnika?

góry dzięki Andy

+1

Na przyszłość, MVC ma klasę System.Web.Mvc.TagBuilder że warto przyjrzeć się. Nie neguje on potrzeby powrotu IHtmlString, ale ma większą funkcjonalność niż StringBuilder dla tego rodzaju zadania. –

Odpowiedz

21
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()); 
} 

wartości użytkowej powrót IHtmlString. Mam nadzieję, że ta pomoc.

+0

Działa idealnie. Dzięki takepara bardzo doceniane. – AndyM

+0

Czy powinien to być 'MvcHtmlString', czy nie ma to już miejsca w ASP.NET MVC 3? – ehdv

+1

@ ehdv dobre pytanie; Przeszukałem go i znalazłem (this) [http://stackoverflow.com/a/3382908/295686] (HtmlString jest preferowany w .NET 4+) – mlhDev

Powiązane problemy