vamos a considerar dos vistas que utilizan el mismo diseño compuesto por:Asp.Net MVC de diseño y vistas parciales en
- Una columna de la izquierda que contiene un "cuerpo" (que se llena de manera diferente por ambas visitas)
- A columna derecha que muestra información general (aprobada a través del modelo)
En lugar de definir la parte correcta dos veces, me pregunté si podría crear una Vista parcial para vincular directamente desde la página de diseño.
El problema es que las vistas parciales heredan implícitamente sus modelos de la vista que se está representando. Y como cada vista tiene su propio modelo, termino con una discrepancia en el tipo de modelo en la vista parcial.
Desde aquí veo dos soluciones:
- pude insertar la parte común del modelo de vista en el ViewBag. Desafortunadamente, esto significa que cada vista que utiliza este diseño tiene que implementar esta "convención" pero nada advierte al desarrollador al respecto en tiempo de compilación ...
- Podría usar el polimorfismo para hacer que cada modelo de vista herede de la misma clase base (editar : o interfaz) que usa Vistas parciales. Esto funcionaría hasta cierto punto, pero potencialmente aumentaría exponencialmente en complejidad tan pronto como tenga una segunda vista parcial en el mismo diseño.
Así que aquí están las preguntas:
- Estoy en lo cierto con los supuestos anteriores?
- ¿Ve alguna otra posibilidad?
- ¿Alguna experiencia de retorno en esto?
Muchas gracias, TB.
Hacia el 2017, también podría hacer que la porción común sea propiedad de cada modelo, y luego pasarla como el modelo a '@ Html.RenderPartial' – jpaugh