2012-11-13 50 views
1

我做一個自定義的htmlhelper,其目的是建立一個ul,問題是它返回encoded html,我無法繞過它。我試圖用html.raw()沒有成功。想法?自定義HtmlHelper返回編碼的html

的HtmlHelper

public static MvcHtmlString TopMenu(this HtmlHelper helper, IEnumerable<string> names) 
{ 
    var ulTag = new TagBuilder("ul"); 

    foreach (var name in names) 
    { 
     var liTag = new TagBuilder("li"); 

     liTag.SetInnerText(string.Format("<img src='{0}' alt='alt' />{1}", name, name)); 
     ulTag.InnerHtml += liTag.ToString(TagRenderMode.Normal); 
    } 

     return MvcHtmlString.Create(ulTag.ToString(TagRenderMode.Normal)); 
} 

我的觀點

@Html.Raw(Html.TopMenu(CodeTesting.Models.NamesList.Names(20))) 

回答

1

liTag.SetInnerText()逃脫文本,你通過它
您想設置liTag.InnerHtml。您還需要HTML轉義name

+0

的作品。我如何需要html轉義名稱? –

+0

@ Dejan.S:調用'helper.AttributeEncode'。 – SLaks

+0

不知道我在這裏跟着你,你能用一個例子來展示嗎?謝謝 –