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.
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
Gracias eduncan, buen punto! Alguna información y referencias aquí: http://davidhayden.com/blog/dave/archive/2009/04/04/ASPNETMVCPartialViewsHtmlRenderActionASPNETMVCFutures.aspx –
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. –