Ich möchte li
Elemente mit TagBuilder rendern.Rendern von HTML-Code mit TagBuilder und ASP.NET MVC 4 (mit Razor-Engine)
Meine Funktion
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);
}
Wenn ich den folgenden Code ein Anruf mit:
@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)
Die Ergebnisse werden als Text nicht HTML-Tag gedruckt.
<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>
Ich möchte das HTML-Tag nicht Text drucken.
Wo ist mein Fehler?
Alle strinsg in MVC werden automatisch verschlüsselt HTML so verwenden wir Raw() –
Ihr Code funktioniert und ich habe auf. Aber ich werde meiner oben beschriebenen Methode folgen. –
Dies ist keine akzeptable Antwort, Erweiterungen müssen nicht mit Raw verpackt werden, um zu funktionieren. Erweiterungen, die das Tag als Text ausgeben, wurden nicht korrekt geschrieben (In diesem Fall). Siehe op's "Ich fand meinen Fehler" – Tod