2012-02-18 21 views
0

製品のネストされたParent \ Childリストを表示しようとしています。私のテーブルには、IdフィールドとParentIdフィールドがあります。私はProductオブジェクトのリスト<を持っているので、ビューに表示したいと思います。私は以下の解決策を考え出しましたが、より良い解決策があると確信しています。MVC3 Razorの親子リスト

私の解決策:これらの名前の配列をループしながら、私は配列項目を== Product.Name用製品の一覧<>を問い合わせるよう

私はグループ\主な製品の名前を知っています。私はそれを見つけたら、

私は私のリスト項目がリスト<を照会することにより、任意の子項目を探す

  • Product.Name

    を追加

      非順序付きリストを開始> ParentIdはですすべてのレコードのための製品の==製品.Id。いくつかある場合、私はかなり多くのプロセスを繰り返しますが、今度は子製品を親製品として使用し、子を探しています。 これ以上の子供たちが製品のために存在しないならば、私は今、私は私のリストはので、私は唯一のそのための3つのレベルより深いコード化されることはありません知っている、これが機能するにもかかわらず、リスト項目 [閉じるリスト

    を閉じますグレート・グランド・パパの子供が決して見られないことを意味する。私はそれが必要であるように深くなるようにしたいと思います。何かご意見は?

    ありがとうございました

  • +0

    モデルを示すコードとこれまで行ってきたことを指定しておけば助けになります(コントローラコードとビューのco de) –

    答えて

    0

    あなたはこれを試しましたか?

    マスタービューでは、親を持たない製品をレンダリング:

    @Html.Action("DisplayChildren", "ControllerName", new { parentId = null }) 
    

    を部分図では、再帰的にレンダリング子孫:コントローラで

    @model IEnumerable<Product> 
    <ul> 
        @foreach (var child in Model) 
        { 
         <li> 
          @Html.DisplayFor(m => child.Name) 
          @Html.Action("DisplayChildren", "ControllerName", 
           new { parentId = child.Id }) 
         </li> 
        } 
    </ul> 
    

    を返すのみ直接の子:

    public ActionResult DisplayChildren(int? parentId) 
    { 
        var children = GetDirectChildrenOf(parentId); 
        if (children.Count() > 0) 
         return PartialView(children); 
        else return new EmptyResult(); 
    } 
    
    +0

    あなたの返事をありがとう。私はまだmvcの新人ですので、私はいくつかの追加の質問があるかもしれませんが、私はこれを試してみましょう。再度、感謝します。 – Jason

    関連する問題