private static FluentTagBuilder BuildTags(this TreeNodes nodes) { var ulTag = new FluentTagBuilder("ul"); foreach (var node in nodes) { var liTag = new FluentTagBuilder("li") .If(node.Value.IsActive).AddCssClass(ActiveNodeCssClassName); var spanTag = new FluentTagBuilder("span") .SetInnerText(node.Value.Title) .If(!String.IsNullOrWhiteSpace(node.Value.Description)).SetAttribute("title", node.Value.Description); // if we have a url then enclose the span tag in an a tag if (!String.IsNullOrWhiteSpace(node.Value.Url)) { var aTag = new FluentTagBuilder("a") .SetAttribute("href", node.Value.Url) .If(node.Value.OpenInNewWindow).SetAttribute("target", "_blank") .AddInnerTag(spanTag); liTag.AddInnerTag(aTag); } else { liTag.AddInnerTag(spanTag); } liTag.If(node.Children.Any()).AddInnerTag(node.Children.BuildTags()); ulTag.AddInnerTag(liTag); } return(ulTag); }
private static MvcHtmlString BuildHtml(this TreeNodes nodes, string cssClassName) { var treeNodes = nodes as List <ITreeNode <NavigationItem> > ?? nodes.ToList(); if (nodes == null || !treeNodes.Any()) { return(MvcHtmlString.Empty); } var tags = treeNodes.BuildTags(); var parent = new FluentTagBuilder("nav") .AddCssClass(cssClassName) .AddInnerTag(tags); return(new MvcHtmlString(parent.ToString())); }
public FluentTagBuilder AddInnerTag(FluentTagBuilder tag) { return(Operate(() => _builder.InnerHtml += tag.ToString())); }