2008-09-13 20 views
8

Estoy usando algunas (2 o 3) páginas maestras en mi aplicación ASP.NET MVC y cada una debe mostrar bits de información de la base de datos. Como una lista de patrocinadores, estado actual de fondos, etc.¿Dónde colocar el código de la página maestra en una aplicación MVC?

Así que mi pregunta era, ¿dónde debería poner estos códigos de llamadas a la base de datos de la página maestra?

Normalmente, estos deberían entrar en su propia clase de controlador ¿no? Pero eso significaría que tendría que cablearlos manualmente (por ejemplo, pasar ViewDatas) ya que está fuera del marco de enrutamiento normal proporcionado por el marco MVC.

¿Hay alguna manera de limpiar esto sin cablear ViewData pasando/Llamadas de acción a las páginas maestras manualmente o subclases de las estructuras?

La cantidad de documentación es muy baja ... y soy muy nuevo en todo esto, incluidos los conceptos de MVC, así que por favor comparta sus sugerencias/técnicas sobre esto.

Respuesta

5

Una forma de hacerlo es colocar en la página maestra la vista del gancho para ViewData y luego definir un BaseController: Controller (o múltiples clases base) donde realiza todas las llamadas de DB que necesita.

Lo que quieres hacer es casi lo mismo que se describe en this artículos.

Espero que esto ayude!

Saludos

0

Si no le importa datos de vista inflexible, puede poner todos los datos de la página maestra en una clase base común para ViewData. Puede establecer estos datos en el constructor de la clase base. Todas las vistas que requieren datos adicionales necesitarán datos de vista fuertemente tipados que hereden de esta clase base.

Para permitir una llamada para ver() en sus controladores sin ningún viewdata explícita puede anular Vista en su ControllerBase:

protected override ViewResult View(string viewName, string masterName, object model) 
{ 
    if (model == null) 
    { 
     model = new ViewDataBase(); 
    } 
    return base.View(viewName, masterName, model); 
} 
+0

¿Podría llamar a ese BaseViewData en su lugar :-) – chakrit

1

Muy buena pregunta. Tienes varias opciones disponibles para ti.

  1. Haga que jQuery llame a su página maestra que capte los datos que necesita de un controlador y rellene los campos con jQuery nuevamente.
  2. La segunda opción es crear controles de usuario que hagan sus propias llamadas al controlador para completar su información.

Creo que la mejor opción es crear controles para la región de su página maestra que tiene datos que deben rellenarse. Dejando su página maestra para contener elementos de diseño estrictamente. Buena suerte.

Cuestiones relacionadas