asp.net-mvc-3 – 在“@”字符后面出现意外的“foreach”关键字

我有一个局部视图在剃刀。当我运行它,我得到以下错误 – 似乎像Razor陷入思考我在写代码无处不在。

Unexpected “foreach” keyword after “@” character. Once inside code,you do not need to prefix constructs like “foreach” with “@”

这是我的观点:

@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>

解决方法

在你的使用块,Razor期待C#源,而不是HTML。

因此,你应该写一个没有@的foreach。

在HTML标记中,Razor需要标记,因此您可以使用@。

例如:

<div>
    <!-- Markup goes here -->
    @if (x) {
        //Code goes here
        if (y) {
            //More code goes here
            <div>
                <!-- Markup goes here -->
                @if (z) { }
            </div>
        }
    }
</div>

你只需要一个@,如果你想把代码放在它期望的标记,或者如果你想在任何地方写输出

要将非标记标记放置在期望代码的位置,请使用@:或< text&gt ;.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....