0

私がやろうとしているのは、かみそりページのリストに各項目を表示することです:

_layout.cshtml

<div id="LeftSidebar">
    <ul>
        @foreach (var x in MenuItems.Items)
        {
            <li><a href="#">@x.ItemName </a></li>
        }
    </ul>
</div>

menu.cs

public class Menu
{
    public string ItemName { get; set; }
    public string Alt { get; set; }

    public Menu()
    {

    }

    public Menu(string itemName, string alt)
    {
        ItemName = itemName;
        Alt = alt;
    }

}

public class MenuItems
{
    public static List<Menu> Items = new List<Menu>();
    public MenuItems()
    {
        Items.Add(new Menu
           {
               Alt = "test item",
               ItemName = "item 1",
           });
        Items.Add(new Menu
        {
            Alt = "test item",
            ItemName = "item 2",
        });
    }
}

それは私がこれまでに持っているものですが、何も表示されませんか?

ありがとうホーラハン

4

1 に答える 1

0

これは、クラスの静的フィールドにアクセスするだけでMenuItemsクラスのインスタンスを作成することがないためです。したがって、コンストラクターが実行されておらず、2つのテスト項目が追加されていません。

MenuItemsコンストラクターを静的コンストラクターに置き換えてみてください。

public class MenuItems
{
    public static List<Menu> Items;

    static MenuItems()
    {
       Items = new List<Menu>();

       Items.Add(new Menu
       {
           Alt = "test item",
           ItemName = "item 1",
       });
       Items.Add(new Menu
       {
            Alt = "test item",
            ItemName = "item 2",
        });
     }
}

これにより、MenuItems.Itemsを使用してアクセスするときに、[アイテム]フィールドが確実に入力されます。

于 2013-01-17T20:34:13.363 に答える