我尝试使用两个if语句到foreach这样但在第二个if语句中获取错误。请提供建议
@{
string path = System.Configuration.ConfigurationManager.AppSettings["ImageEdit"];
int i = 0;
}
@foreach (var item in Model.PhotoTables)
{
if (i < 1)
{ <div class="row">
}
<div class="col-xs-2 col-wrapper">
<div class="image-wrapper">
<img src="@Url.Content(path+item.PhotoName)" alt="" />
<img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
</div>
</div>
@if (i < 1 )
{
</div>}
</div>
i++;
}
答案 0 :(得分:1)
您似乎有一个额外的结束div,没有匹配的开始标记。
您的代码块可以包含所有逻辑。尝试:
@{
string path = System.Configuration.ConfigurationManager.AppSettings["ImageEdit"];
int i = 0;
foreach ( var item in Model.PhotoTables )
{
if ( i < 1 )
{
<div class="row">
}
<div class="col-xs-2 col-wrapper">
<div class="image-wrapper">
<img src="@Url.Content(path + item.Name)" alt="" />
<img class="delimg" src="~/Content/Adminex/images/delete-icons.png" id="@item.Id" />
</div>
</div>
@if (i < 1 )
{
</div>
}
i++;
}
}
您只需要包含代码块的@符号。
直接嵌套实际代码块(不是HTML)时不需要@符号,因此第一个foreach
和if
都可以,但是我们进入HTML,然后返回到第二个if
的代码 - 我们需要使用@。
答案 1 :(得分:0)
手动操作foreach
语句中的变量可能会导致问题。相反,请利用当前的框架方法Select()
。
型号:
var model = new SampleViewModel
{
Items = new List<string>
{
"A",
"B",
"C"
}
};
return View(model);
}
剃刀:
@foreach(var item in Model.Items
.Select((value, index) => new { Value = value, Index = index }))
{
if ( item.Index < 1 )
{
<div class="row">
}
<div>@item.Index @item.Value</div>
if ( item.Index < 1 )
{
</div>
}
}
结果:
0 A
1 B
2 C