Che cos'è la "logica di presentazione" e quanto è accettabile nelle viste?


13

Nella mia applicazione web devo fornire un modulo per la creazione e la modifica. I moduli per la creazione e la modifica presentano differenze minori, quindi, a mio avviso, sto pensando di fare qualcosa del genere:

<form>
// a lot of htnl goes here 
@if (editing)
{
  // some more fields shown in edit mode
}
@if(!editing)
{
 // some stuff shown in create mode
}

Ho sempre cercato di non mettere alcuna ifdichiarazione nelle mie opinioni, ma questa volta non vedo nessun'altra opzione se non quella di copiare un'enorme porzione di HTML in due punti, cosa che non voglio fare. Questa "logica di presentazione" è corretta e ci sono altre opzioni?

Risposte:


17

La logica di presentazione comprende la logica e i calcoli necessari per presentare i dati aziendali nel modo giusto per una vista particolare.
Per viste grafiche complesse, possono essere calcoli piuttosto complessi (ad esempio, il calcolo della dimensione di ciascuna fetta di torta e il posizionamento delle etichette per un grafico a torta), ma la caratteristica principale è che calcola solo le informazioni rilevanti per la corrente visualizzare e che non modifica in alcun modo i dati aziendali.

È discutibile se la selezione dei campi per la modalità modifica / crea sia un uso corretto della logica di presentazione. In parte dipende dal tipo e dalla quantità di personalizzazione.
Ad esempio, se la differenza è solo una modifica del titolo o la visualizzazione di uno o due campi come di sola lettura in una delle modalità, allora può essere la scelta giusta avere una vista e selezionare le modalità in modo dinamico.
D'altra parte, la mia prima reazione è stata che dovrebbero essere davvero due diverse viste, in cui le parti comuni vengono importate da un terzo file (in modo analogo alla frequenza con cui intestazione e piè di pagina vengono aggiunti alle viste).


12

Sembra perfettamente ragionevole usare una o due istruzioni @if in una vista Razor.
Hanno aggiunto @if a Razor - è pensato per essere usato.

Il tuo codice potrebbe essere abbreviato in uno @if:

@if (editing)
{
  // some more fields shown in edit mode
}
else
{
 // some stuff shown in create mode
}

Un'alternativa è usare tre viste:

  • Vista parziale contenente l'HTML comune
  • Crea vista (chiama la vista parziale)
  • Modifica vista (chiama anche la vista parziale)

Puoi provare DisplayTemplates e EditorTemplates, che sono un buon modo per dividere le visualizzazioni di sola lettura e modificabili.

http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.