首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用HtmlTags创建嵌套的<ul> <li>标签(FubuMVC)

如何使用HtmlTags创建嵌套的<ul> <li>标签(FubuMVC)
EN

Stack Overflow用户
提问于 2011-10-10 01:42:53
回答 1查看 896关注 0票数 1

我以前没有使用FubuMVC HtmlTags库的经验,当我试图实现这样一个简单的嵌套结构时,我只是卡住了:

代码语言:javascript
复制
<ul>
 <li>text</li>
 <li>text
   <ul>
     <li>subtext</li>
     <li>subtext</li>
   </ul>
 </li>
 <li>text</li>
</ul>

下面是我在构建字符串时使用它的方式:

代码语言:javascript
复制
public static HtmlString ChildNodesRecursive(DocumentNode documentNode)        
{
    var tag="";
    if (documentNode.Children.Count > 0)
    {
        tag = "<ul>";
        foreach (var c in documentNode.Children)
        {
            tag += "<li>" + c.Name;
            tag += ChildNodesRecursive(c);
            tag += "</li>";
        }
        tag += "</ul>";
    }
    return new HtmlString(tag);
}

运行正常,但我喜欢使用HtmlTags库(在FubuMvc之外,使用HtmlTags单独的Nuget)。

编辑:我从这两个答案中得到了灵感,并提出了我需要的东西。所以这是我最终使用的代码。

代码语言:javascript
复制
    public static HtmlTags.HtmlTag ChildNodesRecursiveHtmlTag(DocumentNode documentNode)
    {
        var ul = new HtmlTags.HtmlTag("ul");
        foreach (var c in documentNode.Children)
        {
            var li = new HtmlTags.HtmlTag("li");
            li.Add("a").Attr("href",c.ContextFullPath).Text(c.Name);
            if (c.Children.Count > 0)
            {
                li.Children.Add(ChildNodesRecursiveHtmlTag(c));
            }
            ul.Children.Add(li);
        }
        return ul;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-10 02:04:08

我可以给你举一个例子,可能会让你更清楚:

代码语言:javascript
复制
var ul = new HtmlTag("span").AddClass("form_input");
ul.Modify(t =>
{
           foreach (var value in choice)
           {
               t.Add("input")
                   .Attr("type", "radio")
                   .Attr("name", request.Accessor.Name)
                   .Attr("value", value)
                 .Add("span")
                   .AddClass("fixed-width")
                   .Text(value);
           }
});

给你一些类似这样的东西

代码语言:javascript
复制
<span class="form-input">
  <input type="radio" name="bla" value="foo" />
  <span class="fixed-width">foo</span>
  ...etc...
</span>

你可以通过修改和填充lambda来进行标签的嵌套。我想你会发现你想要做的事情是有可能的,使用所显示的语法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7705294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档