2009-10-07 15 views
6

En nuestros formularios web estándar las soluciones ASP.NET generalmente tenemos un rango de controles de usuario dentro de la página maestra y determinamos si se muestran o no dentro de su código. ¿Cuál es el mejor enfoque dentro de ASP.NET MVC para lograr el mismo objetivo?Cómo controlar la visualización condicional de vistas parciales en ASP.NET MVC

Podría poner obviamente declaraciones en la página maestra o en la vista parcial, pero eso me parece desordenado y rompe el principio de mantener la lógica comercial fuera de la vista. También requiere poner la información necesaria en todos los modelos de vista o heredar de un controlador base que parece ser una gran cantidad de cosas tan simples.

Estaba pensando en usar RenderAction y devolver una vista totalmente en blanco para evitar cualquier resultado. ¿Es un buen patrón?

Respuesta

3

rompe el principio de mantener la lógica de negocio fuera de la vista

No es la lógica de negocio. Es lógica de presentación cuando determina si mostrar algo o no. Está bien tenerlo allí.

Puede tomar la decisión de mostrar algo o no y configurar algunas banderas en el modelo (puede hacer BaseModel o MasterModel, por ejemplo). Luego, sus vistas maestras, sus vistas parciales o los ayudantes de HTML realizarán una representación condicional basada en estos indicadores.

En cuanto a la separación clara de las preocupaciones, sí, los WebForms aparentemente podrían hacerlo, pero era más bien una gran abstracción de los mecanismos subyacentes. A menudo resulta en tener lógica de negocios en el código subyacente, es decir, en la capa de presentación donde la lógica de negocios no pertenece más de lo que pertenece a las vistas.

+1

Me segundos. Obtuve un montón de llamadas "RenderPartialIfNotNull (" Foo ", Model.Something). –

+0

Lo siento, sí, me refiero a la lógica de la interfaz de usuario, no a la lógica empresarial –

Cuestiones relacionadas