mvc c# asp.net-mvc model asp.net-mvc-partialview

model mvc c#



Cómo configurar condicionalmente un modelo en asp.net MVC view? (2)

Puedes intentar usar Interface .

public interface INavigation { //Your props here } public class ServicesNavigation : INavigation { } public class HomeNavigation: INavigation { }

Entonces su vista puede ser de tipo INavigation.

@model INavigation

Y en su controlador según sus condiciones, puede pasar la impedancia de INavigation que desee.

....... INavigation model; if(conditionOneIsMet) { model = new ServicesNavigation(); } else { model = new HomeNavigation(); } return View(model);

Soy un principiante en ASP.NET MVC.
Mi página tiene una vista parcial llamada _Navegación que estoy reutilizando.
Si el usuario está en "Inicio", <a> de la navegación debe apuntar al carácter "#", si el usuario está en la página "Servicios", el href de la navegación debe apuntar a otra URL, vamos a di "www.misitio.com". Ocurrirá con otros enlaces en este menú también.

Traté de hacer lo siguiente

@if (ViewContext.RouteData.Values.ContainsValue("Services")) { @model MySite.Models.ServicesNavigation } else { @model MySite.Models.HomeNavigation }

Pero dice que puedo tener solo un modelo.
¿Cómo resolverlo?


Su vista es de hecho una clase derivada de la clase WebViewPage<TModel> . La declaración @model define el tipo de modelo ( TModel ). Debido a que es la declaración de tiempo de compilación, no puede cambiarla en tiempo de ejecución.

Si necesita dos modelos diferentes, debe tener dos vistas diferentes.