2009-04-02 12 views
0

Je suis assez nouveau à ASP MVC et je me demandais quelle est la meilleure façon de gérer les instructions conditionnelles dans vos vues? Je suis sûr qu'il n'y a pas d'approche unique, mais pour des contrôles simples, est-il sage d'avoir des instructions If-Then-Else jonchent la vue? Par exemple, disons que j'ai une liste et que je souhaite définir la classe sur l'un des éléments de la liste si l'une des propriétés du modèle est définie.Conditions dans les vues

<% if (myModel.MyProperty == 1) { %> 
    <li class="myClass"> 
<% } else { %> 
    <li> 
<% } %> 

Est-ce la meilleure façon d'aborder cela, ou existe-t-il un meilleur moyen? Je suis juste préoccupé par le fait que si vous avez de nombreuses conditions comme celle-ci, à votre avis, cela va commencer à avoir l'air plutôt désordonné.

Merci d'avance pour tout conseil.

Répondre

0

Je voudrais mettre cela dans votre contrôleur. En supposant que vous ne me dérange pas d'avoir

<li class=""> 
+0

Je ne le mettrais pas dans le contrôleur. La définition de choses comme les classes css est une logique d'affichage qui n'appartient pas au contrôleur. Gardez-le dans la vue que je dis. – Ash

0
<ul> 
    <% foreach (var item in Model.Items) { <% 
    <li<%= item.HasProperty ? " class="\class\"" : "" %>> 
     <%= Html.Encode(item.Name) %> 
    </li> 
    <% } %> 
</ul> 
+0

Cela fonctionne bien. Maintenant, disons que vous avez une liste de 10 éléments (ou même plus) si vous avez utilisé la méthode que vous mentionnez ci-dessus, vous aurez cette condition dans chaque élément de la liste. Pour l'item de liste 1 si model.property == 1 alors placez la classe, si l'item 2 a la propriété de 2, etc. Cela ne va-t-il pas être un peu compliqué? –

+0

avec des éléments répétés, vous utiliserez probablement des boucles avec un élément li –

1

Si vous voulez vraiment une vue plus propre, vous pouvez créer une aide:

public static class MyHelpers { 
    // Need a more descriptive name (based on what you're generating) 
    public static string MyListItemHelper(this HtmlHelper helper, bool condition) { 
     if(condition) { 
      return "<li class=\"myClass\">"; 
     } else { 
      return "<li>"; 
     } 
    } 
} 

alors votre point de vue est juste:

<%= Html.MyListItemHelper(myModel.MyProperty == 1) %> 
    ... 
</li> 
Questions connexes