1
メニューを作成するための再帰的なメソッドを作成しようとしています。 達成したいメニューには、子供の子供などが表示されます。 私はコードをデバッグし、 "最年少の子供"に至るまで行きました。再帰メソッドは子孫の子をループしません
public string GetMenu(Node currentPage)
{
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
foreach (var item in currentPage.ChildrenAsList)
{
writer.RenderBeginTag(HtmlTextWriterTag.Li);
writer.AddAttribute(HtmlTextWriterAttribute.Href, item.Url);
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.Write(item.Name);
if (item.ChildrenAsList.Any())
{
writer.RenderBeginTag(HtmlTextWriterTag.Ul);
GetMenu(new Node(item.Id));
writer.RenderEndTag();
}
writer.RenderEndTag();
writer.RenderEndTag();
}
}
return stringWriter.ToString();
}
この方法では、出力を与える:
<ul class="nav nav-sidebar">
<li>
<a href="/artikelsida001/">Artikelsida001
<ul>
</ul>
</a></li>
<li><a href="/patrikartikelsida/">PatrikArtikelsida
<ul>
</ul>
</a></li>
<li><a href="/en-testsida/">En testsida</a></li>
</ul>
質問をするのを忘れたと思います。私はあなたに 'GetMenu(新しいノード(item.Id))への応答を投げ捨てることと何か関係があると思う。 – Jamiec
申し訳ありません@MongZhu、それは私の最初の投稿ですので、それを数回書き直して良い。明らかにそれはうまくいきませんでした。とにかくJonはすでにそれを解決しました、とにかくありがとう! :) –
@PatrikJansson心配しないでください。投稿の下に[編集ボタン](http://stackoverflow.com/posts/42509835/edit)を使用して、投稿に情報を追加することができます。それは石で彫られていません;)幸いにも –