C'è un milione di modi per configurare qualsiasi cosa, ma ti dirò che sono nuovo di MVC (ma mi piace così tanto), tipicamente do imposta un'azione Controller per pagina " . Sono sicuro che è possibile astrarre questo in modo diverso come master MVC, ma per la mia prima app, c'è una correlazione tra una singola azione in un controller e una singola "pagina".
Per quanto riguarda la struttura intorno a casa || prodotto || acquista ecc., sto impostando il mio come
Home controller:
- "http: // root /" = > home page
Controller prodotti:
- "http: // root / products" = > elenco di tutti i prodotti o categorie di prodotti.
- "http: // root / products / detail" = > Errore 404.
- "http: // root / products / detail / 50" = > dettagli di un singolo prodotto con ID 50.
- "http: // root / products / detail / 50 / add" = > aggiungi quel prodotto al carrello
Controller carrello:
- "http: // root / shoppingcart" = > mostra i dettagli del carrello per l'utente corrente.
- "http: // root / shoppingcart / checkout" = > mostra i dettagli del checkout.
Sto provando a seguire il modello "Fat ViewModel, Skinny Controller", quindi le azioni del mio controller sono solo di un paio di righe ciascuna. Inizializzano semplicemente Fat ViewModels ed eseguono 1-2 metodi su ciascun modello in base a ciò che deve essere fatto. I modelli contengono la maggior parte del codice.
E i widget che devono essere riutilizzati vengono trasformati nel proprio ViewModel e il genitore ViewModel ha un membro figlio della classe ViewModel riutilizzabile. ViewModel riutilizzabile ottiene una vista creata per esso e inserita nella cartella "Shared / EditorTemplates". Questa vista è chiamata dall'helper "EditorFor" che si trova nella vista principale di ViewModel.