2010-12-12 7 views
10

Prima di tutto utilizzo MVC 3 RC1 con il motore di visualizzazione Razor. Ho un'estensione helper HTML che assomiglia a questo:Codifica HTML per HtmlHelper Extension Method

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

E sulla vista si chiama in questo modo:

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

Il problema che ho è che MVC è automaticamente HTML che codifica per la risultato nella visualizzazione in modo tutto quello che ottiene è la versione codificata della stringa:

<li>Home</li> 

qualcuno sa come disattivare la codifica automatica per le estensioni helper HTML?

Grazie in anticipo Andy

+1

Per riferimento futuro, MVC ha una classe System.Web.Mvc.TagBuilder che si potrebbe desiderare di esaminare. Non annulla le esigenze di restituzione di IHtmlString, ma offre più funzionalità di StringBuilder per questo tipo di attività. –

risposta

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

valore Usa di ritorno IHtmlString. Spero che questo aiuto.

+0

Funziona perfettamente. Grazie TakePara molto apprezzato. – AndyM

+0

Se questo è 'MvcHtmlString' o non è più il caso in ASP.NET MVC 3? – ehdv

+1

@ehdv buona domanda; Ho cercato su Google e trovato (questo) [http://stackoverflow.com/a/3382908/295686] (HtmlString è preferito in .NET 4+) – mlhDev