コード例 #1
0
        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);
        }
コード例 #2
0
        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()));
        }
コード例 #3
0
 public FluentTagBuilder AddInnerTag(FluentTagBuilder tag)
 {
     return(Operate(() => _builder.InnerHtml += tag.ToString()));
 }