Quale modello utilizzare con un tipico Web Form?

8

Sto scrivendo una semplice applicazione Web Form ASP.NET. Voglio migliorare il codice implementando qualsiasi modello di progettazione con cui si ottiene l'astrazione e aumenta la gestibilità e la comprensibilità.

Quale modello è raccomandato? Fornisci anche collegamenti ad applicazioni di esempio.

    
posta RPK 30.06.2012 - 13:08
fonte

5 risposte

6

Potresti considerare l'utilizzo del modello Model-View-View pattern MVVM . È un derivato di MVC, ma è progettato / destinato ad essere utilizzato esattamente nella situazione che descrivi. C'è una ricchezza di informazioni sul sito MSDN se non hai voglia di cercarlo su google.

MVVM facilitates a clear separation of the development of the graphical user interface 
(either as markup language or GUI code) from the development of the business logic or back 
end logic known as the model (also known as the data model to distinguish it from the view 
model). The view model of MVVM is a value converter[4] meaning that the view model is 
responsible for exposing the data objects from the model in such a way that those objects 
are easily managed and consumed. In this respect, the view model is more model than view, 
and handles most if not all of the view’s display logic (though the demarcation between 
what functions are handled by which layer is a subject of ongoing discussion[5] and 
exploration). The view model may also implement a mediator pattern organising access to the 
backend logic around the set of use cases supported by the view.
    
risposta data 30.06.2012 - 13:52
fonte
9

Con il modulo Web ASP.NET, in genere utilizzi il modello di Presentatore vista modello .

GlenH7 ha menzionato la sua risposta su MVVM, mentre è un modello elegante, ASPX Webform non ha un grande supporto per questo. MVVM è più popolare nel mondo WPF.

    
risposta data 30.06.2012 - 13:58
fonte
8

La risposta breve è : guarda il pattern MVP che evita il potenziale code behind di moduli asp.net emettendo accoppiando (de-coupling) la tua vista e logica.

Potresti anche voler fare un ulteriore passo avanti e guardare il confronto MVC, MVP, ASP. NET.

I seguenti post sono buoni punti di accesso ed esempi:

risposta data 30.06.2012 - 15:05
fonte
5

L'unica cosa che hai bisogno di evitare a tutti i costi è l'anti-pattern di WebForms che mette la logica nel tuo code-behind. Sia che tu stia utilizzando MVP o che ne abbia un sapore o meno, i tuoi file code-behind dovrebbero essere molto sparsi per il tuo equilibrio mentale.

    
risposta data 30.06.2012 - 14:12
fonte
-1

MVVM è possibile in. NET 4.5 con l'associazione modello e l'uso di controlli associati a modelli come FormView.

Ecco la tecnica che uso:

Progettare ViewModels per ogni UserControl e UserControl nidificato e quindi utilizzare un FormView che è sempre in EditMode, dove includo i controlli che si associano alle proprietà del modello usando le espressioni Binding.

Ho impostato SelectMethod e UpdateMethod di FormView. Il primo restituisce ViewModel e il secondo chiama TryUpdate () su di esso. Nei postback, chiamo sempre il metodo di aggiornamento di FormView in Preload o Load. In questo modo ViewModel è sempre aggiornato dalla vista.

Eseguo la logica all'interno di ViewModel e su PreRender ricollego la vista per applicare eventuali modifiche. La chiave in questo metodo consiste nell'iniettare ViewModel nella vista (UserControl) al di fuori della vista (ad esempio a livello di pagina) e, naturalmente, assicurarsi che sia serializzabile e memorizzato nella cache in ViewState o in qualsiasi altro luogo che scelgo.

Infine, disabilito ViewState in tutti i controlli poiché sono ultimamente "pilotati" dal ViewModel con stato memorizzato nella cache e non hanno bisogno del loro stato.

Questa tecnica non mi ha mai deluso finora e vorrei solo trovare una soluzione per il binding di comandi / pulsanti, come WPF.

    
risposta data 09.06.2015 - 10:10
fonte

Leggi altre domande sui tag