2009-10-07 13 views
6

Nelle nostre soluzioni Web standard ASP.NET di solito disponiamo di una serie di controlli utente all'interno della pagina principale e determiniamo se vengono visualizzati o meno all'interno del loro codice. Qual è l'approccio migliore all'interno di ASP.NET MVC per raggiungere lo stesso obiettivo?Come controllare la visualizzazione condizionale delle viste parziali in ASP.NET MVC

Si potrebbe ovviamente mettere se le dichiarazioni all'interno della pagina principale o della vista parziale, ma che mi colpisce come disordinato e rompe il principio di mantenere la logica di business fuori dalla vista. Richiede inoltre di inserire le informazioni necessarie in tutti i modelli di vista o di ereditare da un controller di base che sembra un sacco di problemi per qualcosa di così semplice.

Stavo pensando di utilizzare RenderAction e restituire una vista completamente vuota per impedire qualsiasi output - è un buon modello?

risposta

3

rompe il principio di mantenere la logica di business fuori dalla vista

Non è la logica di business. È una logica di presentazione quando si determina se visualizzare o meno qualcosa. Va bene averlo lì.

È possibile decidere se visualizzare o meno qualcosa e impostare alcuni flag nel modello (ad esempio, è possibile impostare BaseModel o MasterModel). Quindi le tue viste principali, le viste parziali o gli helper HTML eseguiranno il rendering condizionale basato su questi flag.

Per quanto riguarda la netta separazione delle preoccupazioni, sì, il WebForms potrebbe apparentemente farlo ma era piuttosto un'enorme astrazione dei meccanismi sottostanti. Spesso risulta avere una logica di business nel code-behind, cioè nel livello di presentazione in cui la logica di business non appartiene più di quanto non appartenga alle visualizzazioni.

+1

I secondo. Hai un sacco di chiamate "RenderPartialIfNotNull (" Foo ", Model.Something)". –

+0

Scusa, sì, intendevo la logica dell'interfaccia utente e non la logica aziendale –

Problemi correlati