0

鉴于自定义模型,我在使用 foreach 循环进行迭代时遇到问题。我正在尝试为剃须刀创建动态菜单这是我的代码:

模型:

public class MenuCtrlModel

{
    public IList<Menu> menu { get; set; }
    public IList<SubMenu> subMenu { get; set; }
}

控制器:

    public PartialViewResult Index()

    {
        var nuser = dataContext.UserLogins.SingleOrDefault(x => x.nvrchrUsername == User.Identity.Name);
        string[] menu = nuser.vcrMenu.ToString().Split('|').ToArray();

        string[] subMenu = nuser.vcrSubmenu.ToString().Split('|').ToArray();

        MenuCtrlModel menuctrl = new MenuCtrlModel();

        menuctrl.menu = (from varMenu in dataContext.Menus where            menu.Contains( Convert.ToString( varMenu.intMenuID ) ) select varMenu).ToList();

        menuctrl.subMenu=(from varSubmenu in dataContext.SubMenus where 
 subMenu.Contains( Convert.ToString(varSubmenu.intSubMenu ) ) select varSubmenu ).ToList();
    }  

视图:它给了我错误

**@model IList<MVCAPP.Models.MenuCtrlModel>
@foreach(var xyz in Model.select(x=>x.menu))

{

    @Html.RouteLink(xyz.Select(x=>x.nvcrMenuName), new { controller = xyz.Select(x=>x.nvcrLink),action=xyz.Select(x=>x.nvcrLink) })}

}
**

我也试过

@foreach(var xyz in Model)

当我尝试查找像 Model.Menu 这样的菜单列表时,它不是菜单没有出现在智能感知中**请建议我该如何解决这个问题。

谢谢你。

4

2 回答 2

0

您将需要 SelectMany,因为您的模型也是一个集合。

@model IList<MVCAPP.Models.MenuCtrlModel>
@foreach(var menu in Model.SelectMany(x => x.Menu))
{
    @Html.RouteLink(menu.nvcrMenuName, new { controller = menu.nvcrLink, action=menu.nvcrLink })
}

或者是IList<MVCAPP.Models.MenuCtrlModel>一个错误,您的控制器代码似乎表明您实际上有一个MenuCtrlModel,因此模型线需要更正?

IE

@model MVCAPP.Models.MenuCtrlModel
@foreach(var menu in Model.Menu)
{
    @Html.RouteLink(menu.nvcrMenuName, new { controller = menu.nvcrLink, action=menu.nvcrLink })
}
于 2013-09-04T14:35:14.877 回答
0

由于Model是 的列表MenuCtrlModel,其中每个都有一个menu属性,Model.select(x=>x.menu)因此将返回集合的集合。

我认为您想遍历每个项目,然后遍历每个项目中的菜单:

@foreach(var menuModel in Model))
    @foreach(var menu in menuModel.menu))    

虽然我不知道子菜单是如何链接的,以帮助您进一步。

于 2013-09-04T14:30:09.220 回答