è una cattiva pratica chiamare una vista da un'altra vista in MVC?

4

Ho alcune viste chiare, non hanno alcuna logica dietro di esse (non c'è alcuna azione o controller dietro di loro), il loro unico scopo è di avvisare l'utente di qualcosa del tipo "Ti abbiamo inviato un email per confermare il tuo account "," Non hai accesso a questa risorsa ", ecc.

Queste viste sono davvero semplici e chiamarle tramite un controller / azione sembra essere troppo sovraccarico, ma in qualche modo mi sembra che non sia del tutto corretto. Cosa pensi? Come gestisci questo tipo di situazioni ??

Credo che questa domanda si applicherà a qualsiasi MVC Framework, ma nel mio caso sto usando il framework ASP.NET MVC 3.

    
posta marcos.borunda 01.06.2012 - 18:41
fonte

3 risposte

5

Nella mia "vista" tutto deve passare attraverso il controller. Quando rompi lo schema di progettazione, anche per qualcosa di semplice, stai chiedendo il caos mentre l'app si evolve nel tempo. Chiedi a tutti coloro che devono ancora lavorare su app di 10-12 anni in cui un cambiamento "semplice" nel 2002 è ora un incubo da affrontare nel 2012.

In .NET MVC3 è possibile utilizzare viste parziali per gestire alcuni widget informativi e JQuery. Quale usare dipenderà da dove si desidera separare l'interazione lato server e client.

Per andare oltre, potresti voler usare un modello di visualizzazione degli avvisi e avere la tua vista (o parziale) adeguata di conseguenza. Ad esempio, utilizzo un viewmodel LinkSelectList per contenere i valori per un elenco di collegamenti che corrispondono ai criteri di ricerca. Lo uso in più punti in un'app in cui l'utente può cercare elementi diversi.

    
risposta data 01.06.2012 - 19:09
fonte
1

Hanno una logica "dietro".

Sono venuti solo come risultato di determinate azioni, come "Fatto, mandami una e-mail e inviami una conferma". Poiché l'azione e-mail viene eseguita in un controller, il controller quindi indirizza alla vista finale.

Se vuoi solo i pop-up per i messaggi di riconoscimento, come quelli che appaiono e poi scompaiono automaticamente, è diverso e puoi usare Javascript e librerie come jQuery per questo.

    
risposta data 01.06.2012 - 19:05
fonte
1

Ma il tuo controller deve prima scoprire se quei messaggi sono validi.

"Ti abbiamo inviato un'email per confermare il tuo account" ha senso solo se un'email è stata inviata senza errori.

"Non hai accesso a questa risorsa" è qualcosa che la vista non può e non deve sapere. Ha bisogno di chiedere al controller di inviare la risorsa. Anche il controller non dovrebbe sapere nulla sui permessi di accesso, ma deve chiedere al modello. Solo dopo che il modello lo ha scoperto, posso rispondere sia con la risorsa che con il messaggio di errore.

    
risposta data 01.06.2012 - 19:30
fonte

Leggi altre domande sui tag