So habe ich den folgenden Code in .net Razor:Razor: Ende der foreach-Block-Rendering nach nicht if-Anweisung
<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>
aber wenn ich versuche, es zu laufen, macht der .net-Compiler die Zeile am Ende der if-Anweisung als hTML-wörtliche anstatt sie als Code kompiliert, wie durch den folgenden Abschnitt aus der Zusammenstellung Quelle angezeigt wird: ich habe Einwickeln
Line 145: WriteLiteral(@" else
Line 146: {
Line 147: link = mainMenuItem.Link;
Line 148: }
Line 149: }
die ganze Sache in einem @ versucht {} Code-Block, so dass es weiß, dass es Code ist, aber dann scheint der Compiler den Block auf der falschen geschweiften Klammer zu beenden, wie das o ne am Ende der foreach-Schleife.
Ich habe andere Leute auf SO gesehen, die das gleiche Problem haben, wenn es html innerhalb der 'if' Anweisung gibt, aber es gibt kein HTML in diesem Block.
Wie bekomme ich den Rest meines Codes zum Rendern als Code?
Oh, duh, das war es! Danke, ich werde diese Antwort annehmen, sobald SO es mir erlaubt. – jimboweb