1

我在做一个自定义的 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))) 
4

1 回答 1

1

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

此外,您需要 HTML-escape name

于 2012-11-13T18:21:06.913 回答