web-dev-qa-db-fra.com

MVC Razor, ajoute l'instruction if à la boucle foreach

J'essaie d'ajouter les données de mon modèle à une table avec rasoir. Mon problème est que je veux une instruction if pour décider quelle classe le tagg devrait être et je ne peux pas le faire fonctionner.

Quand j'ajoute le si j'obtiens l'erreur suivante quand j'exécute le code 

The foreach block is missing a closing "}" character

Comment devrais-je ajouter la déclaration if? Ceci est mon code actuel

@{
      var counter = 0;            
}
@foreach (var item in Model)
{
       if(item.status == "Active") {
           <tr>
       }
       else {
           <tr class="danger">
       }
       <td>@counter</td>
       <td>@item.FirstName @item.LastName</td>
       <td>@item.Email</td>
       <td>@item.PhoneNumber</td>
       <td>Ändra</td>
       <td>Inaktivera</td>
        </tr>     
counter++;
}
13
Lord Vermillion

MVC devrait détecter les balises HTML et les rendre, mais il semble que cela ne fonctionne pas toujours.

Entre les accolades, essayez d'ajouter une balise 

par exemple: 

{
<text> 
   your html 
</text>
} 

ou 

si vous venez d'ajouter la classe, essayez quelque chose comme:

<tr @(item.status == "Active" ? String.Empty : "class=\"danger\"" )>
26
Mark Redman

essayez ci-dessous le code.

@{
    var counter = 0;            
}
@foreach (var item in Model)
{
       if(item.status == "Active") {
          <text> <tr> </text>
       }
       else {
           <text><tr class="danger"></text>
       }
       <td>@counter</td>
       <td>@item.FirstName @item.LastName</td>
       <td>@item.Email</td>
       <td>@item.PhoneNumber</td>
       <td>Ändra</td>
       <td>Inaktivera</td>
        </tr>     
    counter++;
}
4
chamara

Vous pouvez ajouter une méthode d'extension prenant bool ou string selon vos besoins.

public static class HtmlHelpExtention
        {  
          public static string IsChecked(this IHtmlHelper htmlHelper,bool IsCheck, string className)
            {
                return IsCheck? className:"";
            }
         }

et ensuite l'utiliser dans la vue 

<tr class="@Html.IsChecked(item.IsGift,"teal accent-3")">

en utilisant cette méthode vous donnera la possibilité d'utiliser plusieurs classes

1
Abdul Hadi