C# Razor:在if语句之后不呈现foreach块的结尾

C# Razor:在if语句之后不呈现foreach块的结尾,c#,.net,razor,razor-2,C#,.net,Razor,Razor 2,因此,我在.net Razor中有以下代码: <div id="menu_left" class="menu_item"> @foreach (var mainMenuItem in Model) { string link =""; string nameLower = @mainMenuItem.ItemName.ToLower();

因此,我在.net Razor中有以下代码:

<div id="menu_left" class="menu_item">

    @foreach (var mainMenuItem in Model)
            {

                    string link ="";
                    string nameLower = @mainMenuItem.ItemName.ToLower();
                    if (mainMenuItem.SubItem.Count() > 0)
                                  {
                                    link +="javascript:submenu('";
                                    link += nameLower + "_dropdown";
                                    link += "', 'dropdown_menu' );";
                                  } 
                     else 
                                  {
                                         link = mainMenuItem.Link;
                                  }
                      }

                <a href="@link" class="menu_a">
                    <img src="@mainMenuItem.Image" class="menu_link" id="@mainMenuItem.ItemName.ToLower()" />
                </a>

            }

    </div>
我尝试过将整个代码包在一个@{}代码块中,这样它就知道它是代码了,但是编译器似乎在错误的方括号中结束了该块,就像foreach循环末尾的方括号一样

我见过其他人在“if”语句中有html,但在这个块中没有html时,他们也会遇到同样的问题

如何使其余代码以代码形式呈现?

从中删除@

 @mainMenuItem.ItemName.ToLower();
在启动c#代码以及将其与html混合时,您只需要@symbol

例如,在这种情况下,您需要@symbol来呈现nameLower的值:

@foreach(模型中的var mainMenuItem)
{
字符串链接=”;
string nameLower=mainMenuItem.ItemName.ToLower();
一些html
@无名者
}

哦,糟了,就是这样!谢谢,我会尽快接受这个答案。
 @mainMenuItem.ItemName.ToLower();
@foreach (var mainMenuItem in Model)
{

    string link = "";
    string nameLower = mainMenuItem.ItemName.ToLower();

    <div>
        some html
        @nameLower
    </div>
}