Razor:foreach 块的末尾在 if 语句后不呈现
Razor: end of foreach block not rendering after if statement
所以我在 .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>
但是当我尝试 运行 它时,.net 编译器将 if 语句末尾的行呈现为 html 文字而不是将其编译为代码,如下所示编译源中的以下部分:
Line 145: WriteLiteral(@" else
Line 146: {
Line 147: link = mainMenuItem.Link;
Line 148: }
Line 149: }
我试过将整个代码块包装在 @{} 代码块中,这样它就知道这是代码,但是编译器似乎在错误的大括号上结束了该块,就像foreach 循环。
我在 SO 上看到其他人在 'if' 语句中有 html 时遇到同样的问题,但此块中没有 html。
如何让我的其余代码呈现为代码?
从
中删除@
@mainMenuItem.ItemName.ToLower();
你只需要 @ 符号,当你开始 c# 代码并且当你将它与 html 混合时。
例如,在这种情况下,您将需要 @ 符号来呈现 nameLower's 值:
@foreach (var mainMenuItem in Model)
{
string link = "";
string nameLower = mainMenuItem.ItemName.ToLower();
<div>
some html
@nameLower
</div>
}
所以我在 .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>
但是当我尝试 运行 它时,.net 编译器将 if 语句末尾的行呈现为 html 文字而不是将其编译为代码,如下所示编译源中的以下部分:
Line 145: WriteLiteral(@" else
Line 146: {
Line 147: link = mainMenuItem.Link;
Line 148: }
Line 149: }
我试过将整个代码块包装在 @{} 代码块中,这样它就知道这是代码,但是编译器似乎在错误的大括号上结束了该块,就像foreach 循环。
我在 SO 上看到其他人在 'if' 语句中有 html 时遇到同样的问题,但此块中没有 html。
如何让我的其余代码呈现为代码?
从
中删除@ @mainMenuItem.ItemName.ToLower();
你只需要 @ 符号,当你开始 c# 代码并且当你将它与 html 混合时。
例如,在这种情况下,您将需要 @ 符号来呈现 nameLower's 值:
@foreach (var mainMenuItem in Model)
{
string link = "";
string nameLower = mainMenuItem.ItemName.ToLower();
<div>
some html
@nameLower
</div>
}