2009-08-26 15 views
5

Preferisco viewdata fortemente tipizzato per le mie viste asp.net mvc per vari motivi e in realtà ho preferito le Views con codebehinds come erano nelle anteprime precedenti di mvm asp.net perché il codehind era un luogo naturale per definire la classe di ViewData poco in quanto hanno generalmente una relazione 1: 1 con la vista effettiva.asp.net vista mvc e typeded viewdata

C'è un modo per avere il codebehind in asp.net rtm views o non è un buon approccio?

MODIFICA: L'unica ragione per cui desidero avere codebehind è che vedo il ViewData come una proprietà della vista. Se la vista era una classe, ViewData era una delle sue proprietà e non è naturale definirlo in un assembly separato.

risposta

6

Dopo quasi un anno insieme a MVC posso confermare che non ho mai avuto bisogno di code-behind per le viste nemmeno una volta. Se usi code-behind probabilmente continuerai a pensare a WebForms. Lasciatelo cadere

Le viste dovrebbero essere lì per visualizzare solo i dati del modello. Decisioni semplici come la classe CSS da applicare possono essere eseguite direttamente nella vista all'interno dei tag del server. Decisioni più complesse dovrebbero andare al controller o alla logica aziendale.

+0

Ma si usa viewdata fortemente tipizzato e nel caso in cui si definiscono tali classi? – terjetyl

+0

Queste classi devono essere nel proprio assembly: MyProject.Models e, per progetti di dimensioni maggiori, MyProject.ViewModels (o .DTO). – Jason

+0

@TT: Sì, utilizzo visualizzazioni fortemente tipizzate. Tengo i modelli nella cartella "Models".I modelli rappresentano fondamentalmente un sottile strato separato che contiene i dati preparati per una visualizzazione da visualizzare. –

0

Avere codebehind per Views è contrario a uno degli scopi di un framework MVC.

La vista dovrebbe essere il più semplice possibile e concentrarsi solo sulla presentazione lasciando che il controller o le estensioni gestiscano tutta la logica aziendale.

Quelli con la combinazione di ViewState dovrebbero rimuovere la necessità di codebehinds.

0

Non c'è bisogno di codice nell'architettura MVC come con Web Forms.

L'intera architettura MVC si basa sul controller che controlla le cose e non sugli eventi di webcontrol che fanno la magia.

Personalmente sto solo entrando nel lato oscuro di MVC ma mi piace quello che vedo qui ora.

È possibile inserire facilmente il contenuto nella visualizzazione con "visualizzazione di ritorno (elemento)" nelle azioni -> dove l'elemento può essere immesso correttamente nei dati e convalidarlo facilmente nel modello. (Che è grande in quanto gli errori di input verranno visualizzati sulla vista)

1

preferisco fortemente tipizzato viewdata per miei asp.net vista MVC per vari motivi

Questo può ancora essere fatto naturalmente. NerdDinner FormviewModels page 6 Io lo uso e funziona perfettamente. Ho avuto alcuni problemi che puoi trovare nelle mie due domande here e here .

Come detto sopra, non vedo perché si vorrebbe usare codebehind. Se lo desideri, ti consiglio di leggere le informazioni generali sulla struttura MVC e su quali viste servono.

Problemi correlati