Razor Foreach型号列表

时间:2013-01-17 20:29:37

标签: c# asp.net-mvc-3 razor

我要做的是在剃须刀页面上的列表中显示每个项目:

_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",
        });
    }
}

那就是我到目前为止但它没有显示任何东西?

由于 Houlahan

1 个答案:

答案 0 :(得分:0)

这是因为您永远不会创建MenuItems类的实例,因为您只是访问类中的静态字段 - 因此构造函数未运行并添加了两个测试项。

尝试使用静态构造函数替换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访问它时,应确保填充Items字段。