这是我的剃刀观点。
@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"
答案 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>