Sono nuovo di ASP.NET MVC 3.0 e cercando di costruire un'applicazione che utilizza la progettazione MVC ViewModel ..Best practice per MVC .. ViewModel rilegatura utilizzando interfacce Esempio
mi chiedevo controllori che cosa le migliori pratiche sono REINQUADRAMENTO per ViewModels e avere alcune domande qui sotto. Questa è la mia comprensione finora (che potrebbe essere sbagliato) ..
- Creiamo Modelli.
- Creare ViewModels creando nuovi attributi di classe e declairing con lo stesso nome e tipo delle classi del modello di base (compresi i campi ID dei modelli di base che si desidera aggiornare in un secondo momento .. e le classi non sono collegate in alcun modo).
- Creare un repository per ciascuno dei modelli di base (per trovare e salvare dati ecc.).
- Creare un'azione Controller per ciascuno dei ViewModels (che accede ai repository delle classi base per recuperare i valori e inserire questi valori nel ViewModel, quindi passare ViewModel alla ViewModels View).
- creare viste dalle ViewModels (ViewModel Visualizzazioni)
- Nella aggiornamento del controller ViewModel metodo (POST) ricevere l'oggetto ViewModel aggiornato e convertirlo in oggetti del modello di base (forse usare Automapper?) E accanto salvare gli oggetti del modello base posteriore usare i loro repository e applicare l'associazione come questa? "TryUpdate < 'IPerson> (persona)", "TryUpdate <' IPlace> (luogo);" (questo sembra sbagliato, l'obiettivo è di riportare i valori nelle classi base dal ViewModel, applicare il binding, salvare i modelli di base usando i repository! .. Questo sembra non utilizzare i repository .. Invece di TryUpdate < 'IPerson> (persona), mi aspetto di vedere qualcosa di simile: person.Save (IPerson) .. dove "persona contiene i valori", ".Save è il repository" e "IPerson contiene gli attributi di binding da utilizzare per l'associazione"? .. Non so se questo è giusto ..
Finora ho creato ViewModels facendo una nuova classe e l'aggiunta di attributi di diversi modelli base che utilizzano gli stessi nomi a questo punto ho le seguenti domande:.
Q1: Ogni ViewModel ha il proprio c ontroller e accedere a ciascuna delle classi di repository dei modelli di base per ottenere i suoi valori?
Q2: nel ViewModel si dovrebbe includere il campo ID di tutti i modelli di base da cui si stanno utilizzando gli attributi, considerando che si potrebbe voler POSTARE un aggiornamento attraverso il ViewModels Controller al repository dei modelli di base (che richiede il Valori ID)?
Q3: Come si collegheranno gli attributi utilizzando un'interfaccia per l'associazione del modello nel controller utilizzando il repository per il salvataggio.
sono stato in grado di trovare un tutorial o una risorsa che spiega tutto in un passo per esempio passo, una risposta completa sarebbe il seguente esempio:
- 2x modelli semplici, 1x semplice ViewModel, interfaccia di 1x per binding, 1x controller semplice che utilizza una classe di interfaccia per il binding su update, 1x repository .. ie
// Model1
public class Person
{
int PersonID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
DateTime DOB {get;set}
}
// Model2
public class Place
{
int PlaceID {get;set;}
string Description {get;set;}
string AreaType {get;set;}
string PostCode {get;set;}
}
// ViewModel (contenenti attributi da modelli)
publc class ViewModel
{
//Person attributes
int PersonID {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
//Place attributes
int PlaceID {get;set;}
string Description {get;set;}
string AreaType {get;set;}
//other attributes
string someOtherAttributeForDisplay {get;set}
}
// interfaccia Model1 (per vincolante modello)
public interface IPerson
{
string FirstName {get;set;}
}
// interfaccia Model2 (per il legame del modello)
public interface IPlace
{
string Description {get;set;}
string AreaType {get;set}
}
// ViewModelController?
{
//What goes here?
}
// Deposito?
{
//what goes here?
}
stai usando Nuget? –
Ciao Mitch, ho cercato di usare NuGet per aggiungere Unity ed EntLib ai miei progetti, non sono ancora abbastanza sicuro dei loro scopi ... – HonourCode