三级菜单项Boostrap MVC

时间:2016-01-06 11:58:08

标签: c# asp.net-mvc twitter-bootstrap asp.net-mvc-4 razor

我有一个菜单项如下。我正在尝试在剃刀视图中绑定这些项目。我正确地获得了第二级菜单项,但是如何获得第三级菜单项。

@foreach (var item in Model)
            {
                if (item.isParent == false && item.parentId == 0)
                {
                    <li><a href="@Url.Action(item.action, item.controller)"><i class="@item.imageClass"></i> @item.nameOption</a></li>
                }
                else
                {
                    if (item.isParent == true)
                    {
                        <li>
                            <a href="#"><i class="@item.imageClass"></i> @item.nameOption<span class="fa arrow"></span></a>                          
                            <ul class="nav nav-second-level">
                                @foreach (var child in Model.Where(p => p.parentId == item.Id))
                                {
                                    if (child.controller == null)
                                    {
                                        <li><a href="#">@child.nameOption</a></li>
                                    }
                                    else
                                    {
                                    <li><a href="@Url.Action(child.action, child.controller)">@child.nameOption</a></li>
                                    }
                                }
                            </ul>                                
                        </li>
                    }
                }
            }
        </ul>

“工单”是“维护”下的菜单项。 “已分配”和“公司”是菜单项“工作订单”。

以下代码将绑定我的第二级菜单项。我如何为第3级菜单项做到这一点。 ?..请帮帮我..谢谢..

 ClipSaved := ClipboardAll   ; Save the entire clipboard to the  variable ClipSaved
 clipboard = %A_ScriptDir%
; ClipWait
; do sth e.g,   ; SendInput, ^v  
Clipboard := ClipSaved   ; Restore the original clipboard

2 个答案:

答案 0 :(得分:0)

使用可以递归调用的辅助函数。

您需要更改导航栏类,以便它包含导航栏列表

public class NavBar 
{
    /// <summary>
    /// Gets or Sets the Children
    /// </summary>
    public virtual ICollection<NavBar> Children { get; set; }

    .....
}

然后像这样创建你的菜单

        menu.Add(new Navbar
                 {
                     Id = 2, nameOption = "Maintenance", controller = "MaintenancePlan", action = "Index", imageClass = "fa fa-wrench fa-fw", status = true, isParent = true, parentId = 0,
                     childeren = new Collection<Navbar>
                                     {
                                         new Navbar{..., Children = new Collection<NavBar>
                                                                        {
                                                                            ...
                                                                        }},
                                         new Navbar{...}
                                     }
                 });

并在你的razer视图中看到这样的事情。

@{

foreach (var item in Model)
{
    createMenuItem(item);
}


}

@helper createMenuItem(Navbar item)
{
if (item.Children.Any())
{
    foreach (var child in item.Children)
    {
        createMenuItem(child);
    }
}
<li>...</li>

}

答案 1 :(得分:0)

我相信我们会有很多方法可以做到。我按照以下方法。

@foreach (var item in Model)
            {
                if (item.isParent == false && item.parentId == 0)
                {
                    <li><a href="@Url.Action(item.action, item.controller)"><i class="@item.imageClass"></i> @item.nameOption</a></li>
                }                    
                else
                {
                    if (item.isParent == true && item.parentId == 0)
                    {
                        <li>
                            <a href="#"><i class="@item.imageClass"></i> @item.nameOption<span class="fa arrow"></span></a>                          
                            <ul class="nav nav-second-level">
                                @foreach (var child in Model.Where(p => p.parentId == item.Id))
                                {
                                    if (child.controller == null)
                                    {
                                        <li><a href="#">@child.nameOption</a></li>
                                    }
                                    else
                                    {
                                        if (child.isParent == true)
                                        {
                                            <li>
                                                <a href="@Url.Action(child.action, child.controller)"><i class="@child.imageClass"></i> @child.nameOption<span class="fa arrow"></span></a>
                                                <ul class="nav nav-third-level">
                                                    @foreach (var childInside in Model.Where(p => p.parentId == child.Id))
                                                    {
                                                        if (childInside.controller == null)
                                                        {
                                                            <li><a href="#">@childInside.nameOption</a></li>
                                                        }
                                                        else
                                                        {
                                                            <li><a href="@Url.Action(child.action, child.controller)">@childInside.nameOption</a></li>
                                                        }
                                                    }
                                                </ul>
                                            </li>
                                        }
                                        else
                                        {
                                            <li><a href="@Url.Action(child.action, child.controller)">@child.nameOption</a></li>
                                        }
                                    }
                                }
                            </ul>                                                                                            
                        </li>
                    }              
                }
            }

我保持收藏相同。