自定义HtmlHelper返回编码的html

时间:2012-11-13 18:18:28

标签: c# asp.net-mvc-3 html-helper

我正在做一个自定义的htmlhelper,它的目的是构建一个ul,问题是它返回encoded html并且我无法绕过它。我试图使用html.raw()但没有成功。想法?

的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 个答案:

答案 0 :(得分:1)

liTag.SetInnerText()转义您传递的文字 您想要设置liTag.InnerHtml

此外,您需要HTML-escape name