2010-01-08 15 views
5

Estoy tratando de entender cómo organizar mejor algunas listas desplegables comunes que se utilizan en varios puntos de vista (algunos están en cascada)MVC - La mejor forma de organizar las listas desplegables de uso común en muchos puntos de vista

es la mejor forma de crear una sola Modelos \ \ CommonQueries a continuación, crear un servicio web para cada desplegable utilizado en situación cascada luego tener un único controlador que contiene acciones para cada uno de los menús desplegables

de esta manera puedo seguir principio DRY y no repetir las lógicas desplegables ya que son utilizado en varias vistas.

Muchas gracias y saludos por leer mi pregunta y tomarse su tiempo. + ab

Respuesta

2

Cuando dice que sus menús desplegables se usan en varias vistas, ¿todavía considera estas listas desplegables como parte de la vista que las está representando? Si es así, creo que es apropiado usar un helper HTML personalizado o una vista parcial (ascx). Luego, como sugiere, puede completar los datos de los menús desplegables utilizando un servicio común de su capa de dominio. Creo que es un enfoque muy razonable.

Sin embargo, si siente que las listas desplegables son algo externas/no relacionadas con la vista, entonces puede encontrar que usar Html.RenderAction() le da un resultado mucho más limpio. Usando Html.RenderAction(), puede generar el resultado de un método de Acción directamente en cualquier otra vista. Por lo tanto, puede crear 1 controlador con los métodos de acción necesarios para llenar esos menús desplegables. Por ejemplo, supongamos que usted tiene una visión con más o menos algo así como:

<div> 
    <div id="coreView1"> 
     <!-- some view code here --> 
    </div> 
</div> 

<div id="commonDropdowns"> 
     <% Html.RenderAction("Create", "Dropdown"); %> 
</div> 

donde Crear es el nombre de su método en la DropdownController.

Por ejemplo:

public class DropdownController : Controller 
{ 
    public ViewResult Create() 
    { 
     // do stuff here to create the ViewResult of the common Dropdowns 
    } 
} 

Nota: Algunas personas no les gusta este enfoque, ya que no encaja en la típica separación de las preocupaciones MVC. Sin embargo, puede ser un ajuste realmente bueno para algunos casos.

Espero que uno de estos enfoques pueda ayudar.

+1

Cabe señalar que Html.RenderAction NO se incluye con ASP.NET MVC 1.0. Es un complemento independiente. http://eduncan911.com/blog/html-renderaction-for-asp-net-mvc-1-0.aspx Pero, se incluirá con ASP.NET MVC 2.0 Beta (¡por fin!). – eduncan911

+0

Gracias eduncan, buen punto! Alguna información y referencias aquí: http://davidhayden.com/blog/dave/archive/2009/04/04/ASPNETMVCPartialViewsHtmlRenderActionASPNETMVCFutures.aspx –

+0

Gracias por sus respuestas. Estoy en MVC1. Puede que tenga que portarlo a MVC2 y probarlo. Pero a pesar de eso en MVC1, he seguido la ruta de organización \ Model \ CommonQueries y la uso en aquellos en las vistas donde se usa el menú desplegable y la vista donde se mantiene. Intentando conectar en cascada para trabajar con el servicio web ahora, pero eso no está funcionando. Yendo por la ruta de JSON ahora. Es divertido y divertido. Gracias de nuevo. –

Cuestiones relacionadas