Asp.net mvc 3 Razor语法内联代码

Asp.net mvc 3 Razor语法内联代码,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我想做的是,有一个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">

我想做的是,有一个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>

@{int catCount=0;}
@foreach(Model.Categories中的变量catItem)
{
如果(catCount==0)
{
}
catCount++;
@如果(catCount==5)
{
catCount=0;
}
}
但我有一个错误,说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>

@{int catCount=0;}
@foreach(Model.Categories中的变量catItem)
{
如果(catCount==0)
{
@:
}
catCount++;
如果(catCount==5)
{
@:
catCount=0;
}
}

出现此类问题时,请确保转义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>

@{int catCount=0;}
@foreach(Model.Categories中的变量catItem)
{
如果(catCount==0)
{
@:
}
catCount++;
如果(catCount==5)
{
@:
catCount=0;
}
}

问题是,您已经跳过了行中的
if

@if (catCount == 5)
当你用
@foreach{
这样的东西写一行代码时,你就开始了一个代码块,这样你就不必再转义C代码了


只需删除
if
前面的
@
,错误就会消失。

问题是,您已经跳过了行中的
if

@if (catCount == 5)
当你用
@foreach{
这样的东西写一行代码时,你就开始了一个代码块,这样你就不必再转义C代码了

只需删除
@
(如果
)前面的
,错误就会消失