“\”@ \“在代码块的开头无效

时间:2014-03-15 05:15:47

标签: c# asp.net-mvc-4 razor

这是我的剃刀观点。

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

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

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

3 个答案:

答案 0 :(得分:7)

我已经阅读了@@mvc3中工作的地方,即razor 1.0。但不知怎的,在mvc4 razor-2.0

中无效

所以尝试改变

<div id="item@@name" class='itemDivs'>

<div id="item@("@name")" class='itemDivs'>

答案 1 :(得分:5)

我认为问题出在id =&#34; item @@ name&#34;。你不能在那里有@@。 Razor正在使用@ character。如果内容作为代码有效(并且您希望将其视为内容),则可以通过键入@@显式地转义@字符。因此,在您的情况下,您将拥有id =&#34; item @ name&#34;在Razor解析之后。

  

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

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

<div id="item@(name)" class='itemDivs'>

答案 2 :(得分:-1)

请改用此代码:

<div id="item@name" class="itemDivs">

</div>