在MVC局部视图中嵌套if语句

时间:2017-09-05 10:18:04

标签: html asp.net-mvc twitter-bootstrap

我正在尝试动态地将引导导航栏构建到局部视图中。每个东西似乎都适用于顶级菜单,但是当我添加代码循环查找并添加子项时,Razor似乎不太喜欢它。

    <ul class="nav navbar-nav">
        @foreach (var item in Model.Where(x => x.ParentID == null))
        {
            <li name="@item.menusID" class="">
                <a href="#">@item.text</a>
                @foreach (var childItem in Model.Where(x => x.ParentID.Equals(item.menusID)))
                {
                    if (Model.Where(x => x.ParentID.Equals(item.menusID)).First() == childItem)
                    {
                        <ul class="dropdown-menu"><li><a href="#">@childItem.text</a></li>
                    }
                    else if (Model.Where(x => x.ParentID.Equals(item.menusID)).Last() == childItem) @*Problem here*@
                    {
                        <li><a href="#">@childItem.text</a></li></ul>
                    }
                    else
                    {
                        <li><a href="#">@childItem.text</a></li>
                    }
                }

            </li>
        }

上面的代码无法识别else,如果在我尝试的中心找到列表中的最后一项以关闭<ul>并结束下拉列表部分。如果我从整个if else if语句中删除HTML没有错误,它似乎运行。我甚至尝试使用多个if语句而不是其他但没有运气,这似乎比我的更糟糕。我知道我可以在控制器中运行此代码并将其作为一个视图包发送,但我想知道出了什么问题,我是否错过了什么?我读到的一些帖子建议使用<text>标签,但我无法看到它使用此代码,因为我正在构建列表而不是文本块。

0 个答案:

没有答案