意外"的foreach"关键字后" @"字符 [英] Unexpected "foreach" keyword after "@" character

查看:357
本文介绍了意外"的foreach"关键字后" @"字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在做剃刀的局部视图。当我运行它,我得到以下错误 - 它看起来像剃刀卡住思成我到处写code


  

在@字符意外的foreach关键字。一旦进入code,你不需要preFIX构造像的foreach和@


下面是我的看法:

  @model IEnumerable的< SomeModel>< D​​IV>
@using(Html.BeginForm(更新,UserManagement,FormMethod.Post)){    @ Html.Hidden(用户ID,ViewBag.UserId)@foreach(以型号VAR链接){
    如果(link.Linked){
         &LT;输入类型=复选框NAME =userLinksVALUE =@ link.Id检查=选中/>@link.Description<br /&GT;
    }其他{
         &LT;输入类型=复选框NAME =userLinksVALUE =@ link.Id/>@link.Description<br /&GT;
    }
}}
&LT; / DIV&GT;


解决方案

在你的使用块,剃须刀期待C#源代码,而不是HTML。

因此​​,你应该写的foreach 没有 @

HTML标记内,剃刀预计的标记,所以你可以使用 @

例如:

 &LT; D​​IV&GT;
    &LT;! - 标记放在这里 - &GT;
    @if(X){
        // code到这里
        如果(y)的{
            //更多code到这里
            &LT; D​​IV&GT;
                &LT;! - 标记放在这里 - &GT;
                @if(z)的{}
            &LT; / DIV&GT;
        }
    }
&LT; / DIV&GT;

您只需要一个 @ 如果你想要把code其中它的预期的标记,或者如果你想在任何地方写的输出。

要放在非标签状标记,其中该公司预计,code,使用 @ &LT;文本&GT;

I have a partial view done in razor. When I run it I get the following error - it seems like Razor gets stuck into thinking I'm writing code everywhere.

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

Here is my view:

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

解决方案

Inside your using block, Razor is expecting C# source, not HTML.

Therefore, you should write foreach without an @.

Inside an HTML tag, Razor expects markup, so you would use @.

For example:

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

You only need an @ if you want to put code where it's expecting markup, or if you want to write output anywhere.

To put non-tag-like markup where it's expecting code, use @: or <text>.

这篇关于意外&QUOT;的foreach&QUOT;关键字后&QUOT; @&QUOT;字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆