C# .net剃须刀分析器错误

C# .net剃须刀分析器错误,c#,.net,razor,C#,.net,Razor,因此,我有以下代码: @foreach(var subMenuHead in Model) { if(subMenuHead.SubItem.Count() > 0) { <text> <!--'@subMenuHead.ItemName' dropdown menu--> <div id="@subMenuHead.ItemName.ToLower()_dropdown" class="dr

因此,我有以下代码:

@foreach(var subMenuHead in Model)
{
    if(subMenuHead.SubItem.Count() > 0)
    {
        <text>
          <!--'@subMenuHead.ItemName' dropdown menu-->
        <div id="@subMenuHead.ItemName.ToLower()_dropdown" class="dropdown smallscreen_hide dropdown_menu">
        <ul class="dropdown">
        </text>
        foreach(var subMenuItem in subMenuHead.SubItem)
        {
            <text>
            <li class="dropdown">
                <a href="@subMenuItem.SubItemLink" class="dropdown">
                    @subMenuItem.SubItemName
                </a>
            </li>
            </text>
        }
        </ul>
        </div>
    }
}
@foreach(模型中的var子菜单头)
{
if(subnumhead.SubItem.Count()>0)
{
    foreach(子菜单头.子项中的var子菜单项) {
  • }
} }
在主页的以下部分中呈现为分部:

@model IEnumerable<LangSite_151209.Models.MenuItem>

@{
    ViewBag.Title = "Test";
}

<h2>Test</h2>



@Html.Partial("../Shared/_Menu", Model)
@model IEnumerable
@{
ViewBag.Title=“测试”;
}
试验
@Html.Partial(“../Shared/_菜单”,模型)
其本身在布局页面的以下部分中呈现:

    <!-- The logo and constant contact data will be displayed in here. Also the regular text of other pages -->

    @RenderBody()

    <!-------------------------------------------------------------------------------------------------------->

@RenderBody()
当我运行代码时,我得到一个解析器错误:

Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Encountered end tag "div" with no matching start tag.  Are your start/end tags properly balanced?


Source Error: 

Line 78:                 }
Line 79:                 </ul>
Line 80:                 </div>
Line 81:             }
Line 82:         }
解析器错误
描述:解析服务此请求所需的资源时出错。请查看以下特定的解析错误详细信息,并适当修改源文件。
分析器错误消息:遇到没有匹配开始标记的结束标记“div”。您的开始/结束标签是否正确平衡?
源错误:
第78行:}
第79行:
第80行:
第81行:}
第82行:}
但是,当我在注释掉结束ul和div行的情况下运行代码时,我可以看到开始标记,但看不到结束标记,如下所示:

        <div id="about_dropdown" class="dropdown smallscreen_hide dropdown_menu">
        <ul class="dropdown">
            <li class="dropdown">
                <a href="/Home/About" class="dropdown">
                    About us
                </a>
            </li>
            <li class="dropdown">
                <a href="/Home/Testimonials" class="dropdown">
                    Testimonials
                </a>
            </li>
          <!--'Apply' dropdown menu-->
        <div id="apply_dropdown" class="dropdown smallscreen_hide dropdown_menu">
        <ul class="dropdown">
            <li class="dropdown">
                <a href="/Home/About" class="dropdown">
                    About us
                </a>
            </li>
            <li class="dropdown">
                <a href="/Home/Testimonials" class="dropdown">
                    Testimonials
                </a>
            </li>
    <!-------------------------------------------------------------------------------------------------------->

其中,下面注释的破折号行是_布局页面中@RenderBody()语句之后的部分


很明显,开头的div和ul标记在那里,那么为什么我在放入结尾标记时会出现解析器错误呢?

根据您的代码,看起来您实际上并不需要
标记(因为您的代码和HTML之间的转换似乎足够直接,Razor可以理解)

您可以尝试删除
标记,因为如果不需要它们,它们通常会导致一些打嗝。您应该能够使用以下内容而不会出现问题:

@foreach (var subMenuHead in Model)
{
    if (subMenuHead.SubItem.Count() > 0)
    {
        <!--'@subMenuHead.ItemName' dropdown menu-->
        <div id="@subMenuHead.ItemName.ToLower()_dropdown" class="dropdown smallscreen_hide dropdown_menu">
            <ul class="dropdown">
                @foreach (var subMenuItem in subMenuHead.SubItem)
                {
                    <li class="dropdown">
                        <a href="@subMenuItem.SubItemLink" class="dropdown">
                            @subMenuItem.SubItemName
                        </a>
                    </li>
                }
            </ul>
        </div>
    }
}
@foreach(模型中的var子菜单头)
{
if(subnumhead.SubItem.Count()>0)
{
    @foreach(子菜单头.子项中的var子菜单项) {
  • }
} }
基于您的代码,看起来您实际上并不需要
标记(因为您在代码和HTML之间的转换似乎很简单,Razor可以理解)

您可以尝试删除
标记,因为如果不需要它们,它们通常会导致一些打嗝。您应该能够使用以下内容而不会出现问题:

@foreach (var subMenuHead in Model)
{
    if (subMenuHead.SubItem.Count() > 0)
    {
        <!--'@subMenuHead.ItemName' dropdown menu-->
        <div id="@subMenuHead.ItemName.ToLower()_dropdown" class="dropdown smallscreen_hide dropdown_menu">
            <ul class="dropdown">
                @foreach (var subMenuItem in subMenuHead.SubItem)
                {
                    <li class="dropdown">
                        <a href="@subMenuItem.SubItemLink" class="dropdown">
                            @subMenuItem.SubItemName
                        </a>
                    </li>
                }
            </ul>
        </div>
    }
}
@foreach(模型中的var子菜单头)
{
if(subnumhead.SubItem.Count()>0)
{
    @foreach(子菜单头.子项中的var子菜单项) {
  • }
} }
尝试删除所有
标记,使div打开和关闭位于同一范围尝试删除所有
标记,使div打开和关闭位于同一范围取出标记。你说得对,我不需要它们。谢谢取出标签很有效。你说得对,我不需要它们。谢谢