0

私は診断ツールを構築しようとしているので、リストから 1 つの項目を選択すると、別のリストが表示され、別の項目を選択するというようになります。したがって、診断の質問を必要なだけ深く埋め込むことができます。たとえば、次のようになります。

から選びます:

Software - Microsoft - Outlook - How do I?
                               - Errors 
                     - Word    - How do I?
                               - Errors
                     - Excel   - How do I?
                               - Errors

         -Lotus 

Hardware -PC
         -Laptop 

Network  -Firewall

これらは、テーブルで次のように定義されます。

id  parent_id Title
1   0         Software
2   0         Hardware
3   0         Network
4   1         Microsoft
5   1         Lotus
6   4         Outlook
7   4         Word
8   4         Excel
9   5         How do I?
10  5         Errors
...etc

私は MVCSiteMap への参照を見てきました - 私は同様の方法でウェブフォームのサイトマップを使用しました - しかし、これは動的である必要があるので、ブレッドクラムは次のリンクを表示します:

Software > Microsoft > Excel > How do I? > Freeze panes

私が持っているテーブルモデルは次のとおりです。

public class Forum
{
    public int id { get; set; }
    public int parent_id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
}

私のコントローラーのコードは次のとおりです。

     var bc = db.Fora.FirstOrDefault(i => i.id == id);
        var cbh = new List<Forum>();
        if (bc != null)
        {
            var parent = bc.parent_id;
            while (parent != null)
            {
                cbh.Insert(0, parent);
                parent = parent.Parent;
            }
        }

私がやろうとしているのは、フォーラムの新しいリストを作成することです。これにより、リストを作成してパンくずリストを生成できます。私が立ち往生している場所は次のとおりです。

 cbh.Insert(0, parent);
 parent = parent.Parent;

この 2 行のコントローラー コードが間違っているか、フォーラム モデルで階層を作成するために、parent_idからidへの参照が必要であると思われます。

このパズルの最後のピースを完成させるのを手伝ってくれる人はいますか?

ありがとうございました、

マーク

4

1 に答える 1