Rendering html code using TagBuilder and ASP.NET MVC 4 (with Razor engine)
asp.net-mvc-4, c#, razor
Solution
Use `@Html.Raw(Html.RenderListTag("CMS", "Index", "Home", true))`
Problem
I would like to render `li` items using TagBuilder. My function ``` public static string RenderListTag(this HtmlHelper helper, string labelText, string action, string controller, bool isAdmin, string listCssClass = "") { string value = string.Empty; TagBuilder li = new TagBuilder("li"); TagBuilder anchor = new TagBuilder("a"); UrlHelper urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext); if (string.IsNullOrEmpty(action) || string.IsNullOrEmpty(controller)) { anchor.MergeAttribute("href", "#"); } else { anchor.MergeAttribute("href", urlHelper.Action(action, controller, new { area = isAdmin ? "Admin" : "" })); } anchor.SetInnerText(labelText); if (action.IsEqualWith(helper.ViewContext.RouteData.Values["action"].ToString())) { li.MergeAttribute("class", "active"); } if (!string.IsNullOrEmpty(listCssClass)) { li.MergeAttribute("class", listCssClass); } li.SetInnerText(anchor.ToString(TagRenderMode.Normal)); return li.ToString(TagRenderMode.Normal); } ``` When I call using the following code: ``` @Html.RenderListTag("Home", "Index", "Contents", false) @Html.RenderListTag("About", "About", "Home", false) @Html.RenderListTag("Contact", "Contact", "Home", false) @Html.RenderListTag("Show toolbar", "", "", false, "options no-display") @Html.RenderListTag("CMS", "Index", "Home", true) ``` The results is printed as text NOT html tag. ``` <li class="active"><a href="/Contents">Home</a></li> <li><a href="/Home/About">About</a></li> <li><a href="/Home/Contact">Contact</a></li> <li class="options no-display"><a href="#">Show toolbar</a></li> <li class="active"><a href="/Admin/Home">CMS</a></li> ``` I want to print the HTML tag not text. Where is my mistake ?