如何在剃须刀中使用if语句进入foreach?

时间:2016-03-24 09:37:16

标签: html asp.net-mvc razor

我尝试使用两个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++;
            }

2 个答案:

答案 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)时不需要@符号,因此第一个foreachif都可以,但是我们进入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

DotNetFiddle MVC Example