我有一个局部视图在剃刀。当我运行它,我得到以下错误 – 似乎像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> ;.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。