Im doing a custom htmlhelper, its purpose is to build a ul, problem is that it returns encoded html and i cant get around it. I tried to use html.raw() with no success. Ideas?
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));
}
My view
@Html.Raw(Html.TopMenu(CodeTesting.Models.NamesList.Names(20)))
liTag.SetInnerText()escapes the text that you pass it.You want to set
liTag.InnerHtml.Also, you need to HTML-escape
name.