2010-12-12 24 views
10

Her şeyden önce, Jilet görünüm motoruyla MVC 3 RC1 kullanıyorum.HtmlHelper Uzantısı Yöntemi için HTML Kodlaması

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

Ve görünümü böyle denir: Şöyle bir HTML yardımcı uzantısı var

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

bende sorun MVC otomatik HTML kodlama olmasıdır

<li>Home</li> 

kimse HTML yardımcı uzantıları için otomatik kodlama devre dışı bırakma biliyor mu: bu yüzden olsun tüm dize kodlanmış versiyonu görünümünde sonuçlanır? peşin Andy

+1

, MVC içine bakmak isteyebilirsiniz bir System.Web.Mvc.TagBuilder sınıfı vardır. IHtmlString döndürme gereksinimlerini ortadan kaldırmaz, ancak bu tür bir görev için StringBuilder'den daha fazla işlevsellik sunar. –

cevap

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

Kullanım dönüş değeri IHtmlString içinde

teşekkürler. Bu yardımın umarım.

+0

Mükemmel çalışır. Teşekkürler takepara çok takdir. – AndyM

+0

Bu, 'MvcHtmlString' olmalı veya ASP.NET MVC 3'te artık böyle değil mi? – ehdv

+1

@ehdv iyi soru; Ben googled ve bulundu (bu) [http://stackoverflow.com/a/3382908/295686] (HtmlString .NET 4+ tercih edilir) – mlhDev

İlgili konular