剃刀语法内联代码
问题描述:
我想要做的是,有一个包含图标集的div,但我想每行5个图标做一个行。所以我写了这样的东西。剃刀语法内联代码
<div id="icons-list1" class="icons-list">
@{ int catCount = 0; }
@foreach (var catItem in Model.Categories)
{
if (catCount == 0)
{
<div class="icons-list-row">
}
<label title="@catItem.Name" data-selected-color="#@catItem.ColorCode" data-position="n" class="icon static big tooltip" original-title="Tooltip Title">
<img alt="@catItem.Name" src="@Url.Content(@BonubonUrlHelper.CategoryImages + "dark/music.png")">
<input name="categories" value="@catItem.Id" type="checkbox" />
</label>
catCount++;
@if (catCount == 5)
{
</div>
catCount = 0;
}
}
</div>
但我得到一个错误,说foreach语句没有结束块。我尝试了一切,但我无法设法使其工作。我做错了什么?我对剃刀语法很陌生。
感谢
答
确保你逃脱HTML语句时,这类问题出现。
在你的情况,但是,实际的问题是与第二if
语句之前@
转义字符,这是没有必要:
<div id="icons-list1" class="icons-list">
@{ int catCount = 0; }
@foreach (var catItem in Model.Categories)
{
if (catCount == 0)
{
@:<div class="icons-list-row">
}
<label title="@catItem.Name" data-selected-color="#@catItem.ColorCode" data-position="n" class="icon static big tooltip" original-title="Tooltip Title">
<img alt="@catItem.Name" src="@Url.Content(@BonubonUrlHelper.CategoryImages + "dark/music.png")">
<input name="categories" value="@catItem.Id" type="checkbox" />
</label>
catCount++;
if (catCount == 5)
{
@:</div>
catCount = 0;
}
}
</div>
答
的问题是,你已经逃脱行if
@if (catCount == 5)
当你写的东西,如@foreach {
,你不必再逃避C#代码行就启动了一个代码块。
只需在if
前删除@
,并且错误消失。