Итак, у меня есть следующий код в .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.
Как заставить остальную часть моего кода отображаться как код?