我用剃刀做了部分视图.当我运行它时,我得到以下错误 - 看起来Razor似乎一直在想我到处都在编写代码.
"@"字符后出现意外的"foreach"关键字.进入代码后,您不需要使用"@"作为"foreach"的结构前缀
这是我的观点:
@model IEnumerable<SomeModel>
<div>
@using(Html.BeginForm("Update", "UserManagement", FormMethod.Post)) {
@Html.Hidden("UserId", ViewBag.UserId)
@foreach(var link in Model) {
if(link.Linked) {
<input type="checkbox" name="userLinks" value="@link.Id" checked="checked" />@link.Description<br />
} else {
<input type="checkbox" name="userLinks" value="@link.Id" />@link.Description<br />
}
}
}
</div>
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个从Datatable中提取的下拉菜单.这适用于菜单的第一级.
工作代码:
<ul class="dropdown-menu">
@foreach (System.Data.DataRow dr in menu.Rows)
{
if (Level1 != dr["Level1"].ToString())
{
<li><a href="#">@dr["Level1"].ToString()</a></li>
Level1 = @dr["Level1"].ToString();
}
}
</ul>
Run Code Online (Sandbox Code Playgroud)
当我尝试添加嵌套的if语句时会发生此问题.如果将此代码放入Visual Studio,您会注意到@foreachRazor无法识别循环的结束括号.
代码中断:
<ul class="dropdown-menu">
@foreach (System.Data.DataRow dr in menu.Rows)
{
if (Level1 != dr["Level1"].ToString())
{
<li><a href="#">@dr["Level1"].ToString()</a></li>
Level1 = @dr["Level1"].ToString();
if (Level2 != dr["Level2"].ToString())
{
<li><a href="#">@dr["Level2"].ToString()</a></li>
Level2 = @dr["Level2"].ToString();
}
}
} <!-- the issue is the bracket on this line -->
</ul>
Run Code Online (Sandbox Code Playgroud)