Pregunta

Tengo un proyecto ASP.NET Web Forms / MVC híbrido. En mi página maestra, tengo un un "pie" de Control de Usuario "menú" Control de Usuario y. De todos modos. Necesito pasar algunos datos (2 cadenas) que mi "menú" Control de Usuario en mi página maestra (para seleccionar la pestaña actual en mi navegación por los menús, etc.) Mis puntos de vista están fuertemente-mecanografiadas a mi modelo de datos. ¿Cómo puedo enviar datos de mi controlador para mi menú o al menos permitir que mi página maestra para acceder a algunos datos predefinidos en el controlador?

Nota: Entiendo que esto viola pura ASP.NET MVC, pero como he dicho, se trata de un proyecto híbrido. El objetivo principal de mi introducción a ASP.NET MVC en mi proyecto era tener más control sobre mi interfaz de usuario para ciertas situaciones solamente.

¿Fue útil?

Solución

Ponga las cadenas en la colección ViewData,

ViewData["MenuString1"] = "My First String";
ViewData["MenuString2"] = "My Second String";

y recuperarlos en la página maestra como esto:

myMenu.Property1 = ViewData["MenuString1"].ToString();
myMenu.Property2 = ViewData["MenuString2"].ToString();

http://nerddinnerbook.s3.amazonaws.com/Part6.htm

Otros consejos

Se puede utilizar ViewData para compartir datos entre el controlador y vista que no está en el modelo. En el controlador, hacer algo como ViewData["menu"] = myMenu; y luego en la vista de tareas <%= ViewData["menu"] %>. Puede pasar objetos, pero es necesario para emitir la parte posterior ViewData [clave] para el tipo de objeto en la vista.

Otra manera de hacer esto es poner sus menús y otras necesidades de información no relacionada con la modelo en un controlador separado. A continuación, puede utilizar RenderAction para llamar a la acción en su control de navegación que genera el menú. Hack tiene un blog el RenderAction que explica esto con más detalle.

Me incline hacia el uso de ViewData para valores temporales desde el controlador como listas de selección y una RenderAction de cosas no relacionadas, como la navegación principal del sitio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top