我在MVC中使用Razor语法进行简单的for循环:
@for (int i = 0; i < Model.ProductViewModels.Count; i++)
{
if (i%2 == 0)
{
<div class="row">
}
<div class="col-md-4">
<a href="/product?id=@Model.ProductViewModels[i].Id">@Model.ProductViewModels[i].Title - @Model.ProductViewModels[i].Isbn13
<br />
<img src="@Model.ProductViewModels[i].ImageUrl" />
</a>
</div>
@if (i%2 == 0)
{
</div>
}
}
这似乎是我心目中的合法代码,但它不起作用!
我收到错误:
Meddelelse om parserfejl: The for block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
错误的屏幕截图:
有什么想法吗? :)谢谢
答案 0 :(得分:24)
这是一个可行的解决方案,我在Razor View上的Visual Studio中进行了测试。您必须正确使用 @:。
@for (int i = 0; i < Model.ProductViewModels.Count; i++)
{
if (i % 2 == 0)
{
@:<div class="row">
}
<div class="col-md-4">
<a href="/product?id=@Model.ProductViewModels[i].Id">@Model.ProductViewModels[i].Title - @Model.ProductViewModels[i].Isbn13
<br />
<img src="@Model.ProductViewModels[i].ImageUrl" />
</a>
</div>
if (i % 2 == 0)
{
@:</div>
}
}
答案 1 :(得分:3)
您需要使用文字标签
if (i%2 == 0)
{
<text>
<div class="row">
</text>
}
此处是包含更多信息http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx
的链接答案 2 :(得分:1)
尝试这种方式:
if (i%2 == 0)
{
@:<div class="row">
}
或者:
if (i%2 == 0)
{
<text>
<div class="row">
</text>
}
阅读此article
答案 3 :(得分:1)
此解决方案适用于我:
`
@foreach (var item in Model.listItems)
{
if (item.isValid){
@:<div class="validClass">
}else{
@:<div class="invalidClass">
}
@:</div>
}
`
您可以尝试其他解决方案:
<div class="@if(item.isValid){WriteLiteral("validClass");}" ></div>
答案 4 :(得分:0)
您在上面的行中缺少“}”(第8行,在启动您粘贴的代码之前)。你在这里粘贴的代码没有任何问题。