2011-10-05 3 views
0

Si je voulais plusieurs instructions if dans un attribut HTML que je pourrais faire quelque chose comme ceci:multiples si les déclarations dans un attribut HTML - rasoir MVC

<input type="button" value="Bad, the title has a lot of excess spacing" title="@if(SomeModel.condOne) { 
           <text>this</text> 
           } 
           @if (SomeModel.CondTwo) 
           { 
           <text> is</text> 
           } 
           @if (SomeModel.CondThree) 
           { 
           <text> a title</text> 
           }  
          " /> 

Mais cela crée beaucoup d'espaces vides qui ont besoin tronquer. Donc, cela fonctionne:

<input type="button" value="Good, the title is condenced" title="@if(SomeModel.condOne) {<text>this</text>}@if (SomeModel.CondTwo){<text> is</text>}@if (SomeModel.CondThree){<text> a title</text>}" /> 

Le même principe peut être appliqué à un élément avec plusieurs classes (par exemple class = "oddrow Class1" -> class = "evenrow class2")

Mais cela pourrait être difficile à lisez si c'est une longue ligne. Et Visual Studio a l'habitude de casser cette déclaration en plusieurs lignes si vous touchez le crochet ou Ctrl-K, Ctrl-D (que tout prochain développeur est susceptible de faire).

Existe-t-il un moyen meilleur ou plus complet de mettre en œuvre plusieurs conditions d'attribut dans une ligne pour le rasoir MVC?

Répondre

0

Je suggère de créer une petite méthode d'aide qui renvoie le texte dont vous avez besoin.

Vous devrez le passer SomeModel et à l'intérieur de cette méthode vérifiez votre condition de telle sorte que vous auriez quelque chose de plus agréable à regarder et plus facile à maintenir.

Par exemple:

public static class HtmlHelpers 
{ 
    public static string FetchTitle(this HtmlHelper helper, SomeModel model) 
    { 
     //Your logic here. 
    } 
} 

Vous pouvez lire toutes les méthodes Html Helper ici sur Jon Galloway's blog.

C'est là que j'ai appris à les utiliser.

0

Pourquoi ne pas faire exactement comme:

title="@if(SomeModel.condOne) { <text>this</text> } 
     @if (SomeModel.CondTwo) { <text> is</text> } 
     @if (SomeModel.CondThree) { <text> a title</text> }  
          " /> 

Helper est logique si vous utilisez ce même beaucoup de logique, en supposant notamment le même modèle, mais vous voudrez peut-être envisager aussi une aide qui utilise une expression Func<> ou Action<> expression. De cette façon, il ne serait pas lié à un modèle.