consideriamo due viste che utilizzano lo stesso layout compostaAsp.Net MVC layout e viste parziali
- Una colonna di sinistra contiene un "corpo" (che è riempito in modo diverso da entrambe le visite)
- A colonna destra che visualizza le informazioni generali (passate tramite il modello)
Invece di definire la parte destra due volte, mi chiedevo se potevo creare un PartialView da collegare direttamente dalla pagina di layout.
Il problema è che le viste parziali ereditano implicitamente i propri modelli dalla vista che viene renderizzata. E poiché ogni vista ha il suo modello, finisco con una mancata corrispondenza del tipo di modello nella vista parziale.
Da qui vedo due soluzioni:
- ho potuto inserire la parte comune del modello vista nella ViewBag. Sfortunatamente questo significa che ogni vista che usa questo layout deve implementare questa "convenzione" ma nulla avverte lo sviluppatore al momento della compilazione ...
- Potrei usare il polimorfismo per rendere ogni modello di vista ereditato dalla stessa classe base (modifica : o interfaccia) che utilizza le viste parziali. Ciò funzionerebbe fino a un certo punto, ma aumenterebbe potenzialmente in modo esponenziale della complessità non appena avrò una seconda vista parziale nello stesso layout.
Così qui sono le domande:
- ho ragione con le ipotesi di cui sopra?
- Vedi altre possibilità?
- Qualche ritorno sull'esperienza su questo?
Grazie mille, TB.
Circa 2017, è anche possibile rendere la parte comune una proprietà di ciascun modello e quindi passarla come modello a '@ Html.RenderPartial' – jpaugh