Domanda

Io e un collega stanno discutendo come vorremmo generare un link in una pagina. Dovremmo usare html aiutanti o mantenere la logica vista molto semplice nella vista?

Per questo progetto stiamo usando Castello di monorotaia e il motore di visualizzazione NVelocity. Sarei grato a chiunque considera entrambe le opzioni qui sotto e dà loro opinioni.

In questa storia, il collegamento è attualmente utilizzato solo su una singola pagina.

Opzione 1 - Con Helper

Codice Helper

 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();

E poi nella vista, ci basta chiamare l'helper in questo modo:

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

Opzione 2 - All in the View

#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
È stato utile?

Soluzione

Per quanto mi riguarda preferisco l'opzione 1. È più conveniente fare la logica sulla aiutante e più elegante.

Altri suggerimenti

io vivamente / uso Opzione 1 - a prescindere dal numero di visualizzazioni che si sta sviluppando

  • Fai la tua vista Dumb. -. Non importa di una singola vista o di 100 visualizzazioni

Un sacco di supporto per l'opzione 1, quindi -! Tempo per l'avvocato del diavolo gioco

Una delle principali ragioni per l'applicazione concetti come DRY è quello di rendere l'applicazione più facile da cambiare / più gestibile. Quindi:

  • Che cosa succede se il testo nel collegamento ha bisogno di cambiare più tardi? O voglio mettere un'immagine in là invece del testo? Voglio davvero di dover ricostruire l'applicazione per rimuovere un errore di battitura in un link?

  • Peggio ancora, che cosa succede se le esigenze di testo link per essere diversi in pagine diverse? Devo poi aggiungere un altro metodo di supporto per ogni pagina?

  • Questo supponendo che sia me che sta facendo il cambiamento. Che cosa succede se chiedo al mio markup guru cambiare il link ad un'immagine, o aggiungere una classe al un elemento di stile in su? Lui è perfettamente felice di modificare i file di visualizzazione, ma se avesse visto la chiamata aiutante avrebbe avuto alcuna idea di dove l'HTML è stato proviene e dove cambiarlo. Anche se ha trovato la classe helper avrebbe sapere come cambiare il codice C # per fare ciò che gli serve? Tutto quello che sta cercando di fare è di cambiare un po 'di testo! Perché deve essere così difficile?

  • ho potuto alleviare alcuni dei problemi di cui sopra con l'aggiunta di due parametri del metodo sulla aiutante, e passando il testo per ogni link, ma se il testo fosse un tag di immagine? Ora ho HTML che ho bisogno di scappare a mia chiamata helper - che sta andando a guardare piuttosto disordinato. Io ancora non poteva modificare gli attributi dell'elemento di collegamento o, dovrei aggiungere un parametro / parametri per questo pure? Dove si ferma?

In sostanza io sostengo che posso mostrare l'opzione 2 per la maggior parte delle persone e che capiranno e essere in grado di modificarlo. Nizza HTML pianura con alcuni facili da seguire la logica condizionale. Opzione 1 aggiunge complessità e abstration che non ho bisogno.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top