Perché utilizzare Razor Sintassi?

6

Stavo leggendo oggi su Razor Syntax con MVC Framework e mi chiedevo perché avrei / dovrei usare Razor? Quale vantaggio fornisce oltre a fare la stessa cosa nel codice dietro e / o nel controller?

Come esempio ho visto, hanno mostrato come è possibile utilizzare Razor per visualizzare l'ora corrente, facendo array e loop e altre funzioni usando la codifica inline proprio lì all'interno dell'HTML. Questo non fornirebbe un'eccessiva confusione al front-end che può essere facilmente fornito con il codice?

    
posta ggiaquin16 17.03.2016 - 23:38
fonte

1 risposta

7

Più in generale, stai chiedendo i vantaggi dell'utilizzo di un modello invece di generare contenuti direttamente nel tuo codice sorgente.

La risposta è che la combinazione di codice sorgente e HTML potrebbe essere un'alternativa praticabile per le piccole applicazioni, ma non si adatta bene. Una volta che il tuo progetto diventa abbastanza grande, diventa troppo difficile mantenere il codice in cui blocchi di codice HTML si trovano su tutto il codice sorgente.

L'utilizzo di un modello risolve questo problema. Tutta la tua logica risiede nei controller, mentre l'HTML è inserito in modelli, che in MVC sono chiamati views . Quando qualcuno vuole modificare l'HTML, non è necessario gestire la logica di business: solo la vista è interessata. Potrebbe anche funzionare in senso inverso: puoi scambiare la logica lasciando invariato l'HTML (non appena i modelli rimangono gli stessi).

Quindi, se i modelli sono per HTML, cos'è tutto questo codice sorgente in Razor?!

In effetti, hai ancora bisogno di alcune affermazioni logiche all'interno dei tuoi template, di solito in una forma di condizioni o loop. Se devi visualizzare un avatar di una persona solo quando la persona ha effettivamente un avatar, beh, questo è un buon posto per un if nel tuo modello. Se è necessario visualizzare tutti i prodotti forniti dal controller attraverso il modello, ci sarebbe un foreach .

Il fatto che tu possa scrivere qualsiasi codice nelle tue viste non significa che dovresti. Fai attenzione a mantenere la logica aziendale all'interno dei controller. Alcune condizioni e cicli sono soddisfacenti, ma se il codice nelle tue visualizzazioni diventa troppo complicato, è un buon segno che hai fatto troppo. Quindi:

  • Tutta la logica di business dovrebbe essere nei controller (o nelle business class chiamate dai controller, a seconda dell'architettura di livello N che utilizzi e della complessità della tua applicazione).

  • I modelli contengono oggetti semplici (in genere POCO ) che possono essere utilizzati facilmente, senza troppo codice.

  • Le viste contengono solo la logica più elementare necessaria esclusivamente per generare HTML dal modello. Nessuna logica aziendale complessa qui.

risposta data 17.03.2016 - 23:44
fonte

Leggi altre domande sui tag