2010-12-12 29 views
10

まず、私はRazorビューエンジンでMVC 3 RC1を使用しています。HtmlHelper拡張メソッドの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ヘルパー拡張機能を持っている

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

私が持っている問題は、MVCは自動的にHTMLエンコードするということです結果は、ビューに私が得るすべては、文字列のエンコードされたバージョンです:

<li>Home</li> 

誰もがあなたのHTMLヘルパー拡張機能の自動エンコーディングを無効にする方法を知っていますか?事前 で

おかげでアンディ

+1

、MVCはあなたがに見たいと思うかもしれませんSystem.Web.Mvc.TagBuilderクラスを持っています。これはIHtmlStringを返す必要性を否定するものではありませんが、この種のタスクのためにStringBuilderよりも多くの機能が備わっています。 –

答えて

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

使用の戻り値IHtmlString。 このヘルプが必要です。今後の参考のために

+0

完全に動作します。ありがとうtakepara大いに感謝します。 – AndyM

+0

これは 'MvcHtmlString'ですか、それともASP.NET MVC 3ではなくなっていますか? – ehdv

+1

@ehdv良い質問;私はそれを見つけ、見つけました(これは)[http://stackoverflow.com/a/3382908/295686](HtmlStringは.NET 4以降で推奨されています) – mlhDev

関連する問題