mvc3 Razor foreach循环问题

时间:2012-11-07 10:36:42

标签: c# asp.net-mvc-3 razor

您好我有以下代码,但循环中的if语句会导致语句失败,有什么想法吗?

@{ var count = 1; }
@foreach (var siteIcon in Model.SiteIconsList)
{
    <div class="span2">
        <a onclick="updateIcon(@siteIcon.ImageId)" href='#'>
            <img class="iconImage" src="data:Image;base64,@(Html.Raw(Convert.ToBase64String(siteIcon.ImageData)))" alt="" />
        </a>
    </div>
    if(count==5){
        </div>
         <div class="row-fluid">
         count=1;
    }
}

4 个答案:

答案 0 :(得分:2)

似乎是关闭div混淆了剃刀。为了阻止这种情况,我通过在htmlstring中包装新的开始和结束div来使它工作,这阻止了它们被解析,我也对计数器进行了修正。

   <div class="row-fluid">
                @{
                    var count = 1;
                    foreach (var siteIcon in Model.SiteIconsList)
                    {
                        <div class="span2">
                                <a onclick="  updateIcon(@siteIcon.ImageId)" href='#'>
                                    <img class="iconImage" src="data:Image;base64,@(Html.Raw(Convert.ToBase64String(siteIcon.ImageData)))" alt="" />
                                </a>
                            </div>
                        if (count == 5)
                        {
                            @(new HtmlString("</div><div class=\"row-fluid\">"))
                            count = 0;
                        }
                        count = count + 1;
                    }
                }
     </div> 

答案 1 :(得分:0)

您的div格式不正确,之前关闭并稍后打开, 检查一下

</div>
<div class="row-fluid">

相反,你可以这样做

if(count==5){

<div class="row-fluid"> </div>
count=1;

}

答案 2 :(得分:0)

试试这个:

            @foreach (var siteIcon in Model.SiteIconsList)
            {
                <div class="span2">
                    <a onclick="updateIcon(@siteIcon.ImageId)" href='#'>
                        <img class="iconImage" src="data:Image;base64,@(Html.Raw(Convert.ToBase64String(siteIcon.ImageData)))" alt="" />
                    </a>
                </div>
                if(count==5){

                     <div class="row-fluid">
                     </div>
                    count=1;
                }
            }

答案 3 :(得分:0)

首先,您不会在循环结束时递增计数,因此永远不会满足条件。

将Foreach改为For会更好:

for(int i=0; i<Model.SiteIconsList.Count;i++)
                                                                                                   
                if(i==5){
                    <text></div>
                     <div class="row-fluid"></text>
                     count=1;
                }
            }

失败后会收到什么消息?您可能需要使用它来回到html渲染模式