相关疑难解决方法(0)

"@"字符后出现意外的"foreach"关键字

我用剃刀做了部分视图.当我运行它时,我得到以下错误 - 看起来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)

razor asp.net-mvc-3

27
推荐指数
1
解决办法
3万
查看次数

嵌套if语句令Razor感到困惑

我正在尝试设置一个从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)

c# asp.net-mvc razor

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

razor ×2

asp.net-mvc ×1

asp.net-mvc-3 ×1

c# ×1