2012-05-11 14 views
5

Ho una visualizzazione Razor con un sacco di grafico e altri campi di testo che ottengono i dati dal controller. Sto pensando di passare un ViewModel dal controller alla vista che poi analizzerà il contenuto pertinente e lo visualizzerà.ASP.NET MVC 3 - ViewModel Best Practice

Qualcuno potrebbe suggerire se l'approccio sopra è la migliore pratica per risolvere tale, in MVC?

La classe ViewModel può apparire come di seguito:

public class ViewModelDemo 
{ 
    public MyChart chart {get;set;} 
    public string LeftContent {get;set} 
    public string bottomContent {get;set;} 
    public ChartLeged legent {get;set} 
    ...... 
} 

public class MyChart 
{ 
    public List<int> xAxis {get;set} 
    public List<int> yAxis {get;set;} 
    ...... 
} 

ragione per cui sto cercando di tornare ViewModel è che ci sono possono parti della pagina che hanno dati diversi.

+0

Vuoi dire è bene avere ViewModels annidati? Anch'io sono interessante, e faccio lo stesso (intendo nidificare). Ho una pagina con diverse parti logiche e anche solo uno dei modelli a nidificazione annidati può essere ripetuto (a seconda della richiesta Ajax o Postback). Quindi spero che tu abbia ragione) –

+1

Dato che stiamo parlando di buone pratiche: è considerato una buona pratica usare la stessa convenzione di denominazione del framework/linguaggio. In questo caso, .NET/C# utilizza l'involucro corretto per le proprietà pubbliche. Quindi dovresti cambiare i nomi delle tue proprietà in 'Chart',' BottomContent', 'Legend' (ortografia corretta),' XAxis' e 'YAxis'. – Omar

risposta

2

Penso che la soluzione sia corret.

Un altro approccio potrebbe essere quello di suddividere la vista del grande rasoio in viste parziali più piccole, ciascuna con un modello di vista più semplice. Ciò è utile per la leggibilità, la separazione della responsabilità, ecc.

3

Assolutamente. Un ViewModel è una soluzione perfettamente accettabile per questo problema. Vedere la sezione 12.1.5 di ottima MVC di Palermo in azione libro (ideale nel campione gratuito)

L'altra opzione è quella di creare un separato tipo di vista del modello per i nostri punti di vista dal modello di dominio. Creeremo una classe specializzata, solo per in un'unica visualizzazione. Possiamo modellare quel tipo come preferiamo e consentire alla vista di modellare il nostro modello di visualizzazione come vogliamo. Il vantaggio di un modello di vista separato è che le nostre viste non influenzeranno in alcun modo il modello del dominio . Per le applicazioni meno complesse, questa separazione è non necessaria e sovraccompagna il progetto. Con l'aumentare della complessità delle viste , il design delle viste ha un impatto sempre maggiore su del nostro modello di dominio, a meno che il modello di visualizzazione e il modello di dominio non siano separati da .

http://www.manning.com/palermo/Samplechapter12.pdf

Problemi correlati