"\"@ \"在代码块的开头无效

Dhw*_*ani 4 c# razor asp.net-mvc-4

这是我的剃刀观点.

@model IEnumerable<ApricaROI.Models.DatabaseEntities.SalesItemMapping>
@{
    var name_List = Model.GroupBy(x => x.Name).Select(y => y.First()).ToList();
}
@foreach (var name in Model.Select(item => item.Name).Distinct()) {
    <div id="item@@name" class='itemDivs'>
        @{ Html.RenderPartial("_EditItemChild",
                     Model.Where(item => item.Name== name).ToList()); }
    </div>
}
Run Code Online (Sandbox Code Playgroud)

我不知道它有什么样的错误.它给出了以下错误.

"\"@\" is not valid at the start of a code block.
Only identifiers, keywords, comments, \"(\" and \"{\" are valid.\r\n"
Run Code Online (Sandbox Code Playgroud)

Nit*_*rpe 7

我已阅读的地方,@@在工作mvc3razor 1.0.但不知何故不起作用mvc4 razor-2.0

所以尝试改变

<div id="item@@name" class='itemDivs'>
Run Code Online (Sandbox Code Playgroud)

<div id="item@("@name")" class='itemDivs'>
Run Code Online (Sandbox Code Playgroud)


Vla*_*den 5

我认为问题在于id ="item @@ name".你不能在那里有@@.Razor正在使用@ character.如果内容作为代码有效(并且您希望将其视为内容),则可以通过键入@@显式地转义@字符.所以在你的情况下,你会在Razor解析之后得到id ="item @ name".

ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(" - "),下划线("_") ,冒号(":")和句号(".").

如果你需要在里面使用变量请使用

<div id="item@(name)" class='itemDivs'>
Run Code Online (Sandbox Code Playgroud)