视图中的MVC If语句

时间:2014-01-02 23:08:26

标签: c# asp.net-mvc razor

我在MVC View中遇到IF语句问题。我试图用它来为每三个项目创建一行。

<div class="content">
  <div class="container">
    @if (ViewBag.Articles != null)
    {
      int nmb = 0;
      foreach (var item in ViewBag.Articles)
      {
        if (nmb % 3 == 0) { 
          <div class="row">  
        }    
        <a href="@Url.Action("Article", "Programming", new { id = item.id })">    
          <div class="tasks">    
            <div class="col-md-4">    
              <div class="task important">
                <h4>@item.Title</h4>
                <div class="tmeta">
                  <i class="icon-calendar"></i> @item.DateAdded - Pregleda:@item.Click  
                  <i class="icon-pushpin"></i> Authorrr  
                </div>    
              </div>    
            </div>
          </div>
        </a>
        if (nmb % 3 == 0) { 
          </div>
        }
      }
    }
  </div>
</div>

2 个答案:

答案 0 :(得分:35)

如果您尚未使用剃刀代码块,则只需在if语句前加@前缀。

编辑:您现在的代码存在一些问题。

您宣布nmb,但实际上从未对该值进行任何操作。所以你需要弄清楚它应该在做什么。为了修复代码,您需要进行一些微小的更改:

@if (ViewBag.Articles != null)
{
    int nmb = 0;
    foreach (var item in ViewBag.Articles)
    {
        if (nmb % 3 == 0)
        {
            @:<div class="row"> 
        }

        <a href="@Url.Action("Article", "Programming", new { id = item.id })">
            <div class="tasks">
                <div class="col-md-4">
                    <div class="task important">
                        <h4>@item.Title</h4>
                        <div class="tmeta">
                            <i class="icon-calendar"></i>
                                @item.DateAdded - Pregleda:@item.Click
                            <i class="icon-pushpin"></i> Authorrr
                        </div>
                    </div>
                </div>
            </div>
        </a>
        if (nmb % 3 == 0)
        {
            @:</div>
        }
    }
}

这里的重要部分是@:。它是<text></text>的简写,用于强制剃刀引擎渲染文本。

另一件事,HTML标准指定a标记只能包含内联元素,而现在,你在div中放置一个块级元素a {1}}。

答案 1 :(得分:0)

每次使用html语法时,都必须用@开始下一个razor语句。所以应该是@if ....