我以前没有使用FubuMVC HtmlTags库的经验,当我试图实现这样一个简单的嵌套结构时,我只是卡住了:
<ul>
<li>text</li>
<li>text
<ul>
<li>subtext</li>
<li>subtext</li>
</ul>
</li>
<li>text</li>
</ul>下面是我在构建字符串时使用它的方式:
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)。
编辑:我从这两个答案中得到了灵感,并提出了我需要的东西。所以这是我最终使用的代码。
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;
}发布于 2011-10-10 02:04:08
我可以给你举一个例子,可能会让你更清楚:
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);
}
});给你一些类似这样的东西
<span class="form-input">
<input type="radio" name="bla" value="foo" />
<span class="fixed-width">foo</span>
...etc...
</span>你可以通过修改和填充lambda来进行标签的嵌套。我想你会发现你想要做的事情是有可能的,使用所显示的语法。
https://stackoverflow.com/questions/7705294
复制相似问题