Domanda

Ho un ASP.NET MVC3 in C # e Razor. L'architettura dell'applicazione è divisa in Data Access Layer (classi EF + Repository), servizio di livello, controller, ViewModel e Vista.

Il mio ViewModel espone un metodo Fill che accetta come parametro la raccolta di dati da visualizzare nel Visualizza . Al fine non avere accoppiamento tra i componenti, il metodo Fill deve essere richiamato dal Servizio strato o da regolatore

È stato utile?

Soluzione

Definizione: Modello (come in MVC) = livello di servizio (in questo caso)

Il controllore deve essere cospirò come collante tra la visualizzazione e il modello. La vista non dovrebbe essere consapevole del modello e viceversa.

La risposta alla tua domanda è quindi che il controller dovrebbe contenere tutte logica utilizzata per spostare le informazioni dal modello al modello di vista. E 'perfettamente bene di utilizzare qualsiasi classe dal modello all'interno del modello di vista.

Aggiornamento in risposta ai commenti

Come ho detto. Non ho idea di come le vostre classi assomiglia o che cosa si deve fare per generare la navigazione.

  1. Il regolatore deve essere utilizzato per assemblare le informazioni richieste dal modello vista
  2. Il controller non dovrebbe avere alcuna logica di business

Ciò significa che potrebbe essere necessario creare nuove classi nel vostro livello di servizio per essere in grado di raggiungere questi due obiettivi.

Altri suggerimenti

Sarebbe meglio per rimuovere la funzione di riempimento dal ViewModel poi il ViewModel wont dipendeva la parte dati.

Vorrei quindi usare qualcosa come Automapper nel controller per mappare il DataObject Per il ViewModel prima di tornare la vista.

ActionMethod:

public ActionResult Edit(int id)
{
    var data = DataRepo.Get(id);
    var viewMode = Mapper.Map<ViewModel>(data);
    return View(viewModel);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top