web-dev-qa-db-fra.com

Instruction MVC If dans View

J'ai un problème avec l'instruction IF dans MVC View. J'essaie de l'utiliser pour créer une ligne pour tous les trois éléments.

<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>
18
Nezir

Il vous suffit de préfixer une instruction if avec @ si vous n'êtes pas déjà dans un bloc de code de rasoir.

Edit: Vous avez un problème avec votre code en ce moment.

Vous déclarez nmb, mais ne faites jamais rien avec la valeur. Vous devez donc déterminer ce que vous êtes censé faire. Afin de corriger votre code, vous devez effectuer quelques petites modifications:

@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>
        }
    }
}

La partie importante ici est le @:. C'est un raccourci de <text></text>, qui est utilisé pour forcer le moteur de rasoir à rendre le texte.

Une autre chose, la norme HTML spécifie que les balises a ne peuvent contenir que des éléments en ligne, et en ce moment, vous placez un div, qui est un élément de niveau bloc, à l'intérieur d'un a.

36
John H

Chaque fois que vous utilisez la syntaxe html, vous devez démarrer la prochaine instruction razor avec un @. Il devrait donc s'agir de @if ....

0
Bogdan Balas