Question

Moi et un collègue discutent comment nous générer un lien sur une page. Faut-il utiliser html aides ou garder la logique de vue très simple dans la vue?

Pour ce projet, nous utilisons le château Monorail et le moteur de vue NVelocity. Je vous serais reconnaissant à tous ceux qui considère que les deux options ci-dessous et donne leurs avis.

Dans cette histoire, le lien est actuellement utilisé que sur une seule page.

Option 1 - Avec Aide

code Aide

 var action = snail.IsActive ? "ConfirmDeactivate" : "ConfirmActivate";
   var routeValues = new Dictionary<string, string>
                      {
                       {"action", action},
                       {"querystring", "id=" + snail.ID}
                      };
   var href = UrlHelper.For(routeValues);

   var link = new XElement("a");
   link.SetAttributeValue("href", href);
   link.SetValue(action.Substring(7));

   return link.ToString();

Et puis dans la vue, il suffit d'appeler l'aide comme ceci:

<li>$Html.SnailActivationSwitchLink($item)</li>

Option 2 - Dans la vue

#if($snail.IsActive)
  <a href="$Url.For("%{action='ConfirmDeactivate', querystring='id=$snail.ID'}")">Deactivate</a>
  #else
   <a href="$Url.For("%{action='ConfirmActivate', querystring='id=$snail.ID'}")">Activate</a>
  #end
Était-ce utile?

La solution

Pour moi, je préfère l'option 1. Il est plus commode de faire la logique de l'aide et plus élégante.

Autres conseils

Je suggère fortement option / utilisation 1 - quel que soit nombre de vues que vous développez

  • votre point de vue Dumb. -. N'a pas d'importance pour une vue unique ou 100 vues

Beaucoup de soutien pour l'option 1, puis - le temps de l'avocat du diable jeu

L'une des principales raisons de l'application des concepts comme DRY est de rendre l'application plus facile de changer / plus maintenable. Donc:

  • Que faire si le texte du lien doit changer plus tard? Ou je veux mettre une image là-bas au lieu du texte? Est-ce que je veux vraiment avoir à reconstruire l'application à supprimer une faute de frappe dans un lien?

  • Pire que cela, si les besoins de texte de lien pour être différent sur différentes pages? Est-ce que je puis ajouter une autre méthode d'aide pour chaque page?

  • C'est en supposant que moi qui est de faire le changement. Que faire si je demande à mon gourou de balisage pour changer le lien vers une image ou ajouter une classe à l'élément le style vers le haut? Il est parfaitement heureux de modifier les fichiers de vue, mais s'il a vu l'appel à l'aide qu'il aurait aucune idée où le HTML venait et où le changer. Même s'il a trouvé la classe d'aide aurait-il savoir comment changer le code C # pour faire ce dont il a besoin? Tout ce qu'il essaie de faire est de changer un peu de texte! Pourquoi il ne doit être si difficile?

  • Je pourrais atténuer certains des problèmes ci-dessus en ajoutant deux paramètres de la méthode sur l'aide, et en passant dans le texte pour chaque lien, mais si le texte était une balise d'image? J'ai maintenant HTML que je dois échapper à mon appel à l'aide - qui va regarder assez en désordre. Je ne pouvais pas encore modifier les attributs de l'élément de lien non plus, dois-je ajouter un paramètre / paramètres pour cela aussi? Où est-il arrêter?

En substance, je vais soutiens que je peux montrer l'option 2 pour la plupart des gens et ils vont le comprendre et être capable de le modifier. Belle HTML simple avec un peu facile à suivre la logique conditionnelle. Option 1 ajoute à la complexité et que je ne 'abstraction de pas besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top