次のような再帰モデルがあります。
public class Node
{
public int Id { get; set; }
public string Text { get; set; }
public IList<Node> Childs { get; set; }
public Node()
{
Childs = new List<Node>();
}
}
次のコードを使用して、かみそりビューを使用してツリーを構築しています。
<ul>
@DisplayNode(Model)
</ul>
@helper DisplayNode(Node node) {
<li>
@node.Text
@if(node.Childs.Any())
{
<ul>
@foreach(var child in node.Childs)
{
@DisplayNode(child)
}
</ul>
}
</li>
}
すべてが正常に機能し、ツリーがレンダリングされますが、ツリーの各行にテキストボックスを追加する必要があり、次のような名前を入力する必要があります。
Childs[0].Childs[1].Childs[2].Text
したがって、私のモデル バインディングは期待どおりに機能します。
これを達成するために EditorTemplates などを使用する方法はありますか?
フォーム送信時に JavaScript で入力名を作成することは避けたいと思います。