Quiero redirigir al usuario a una vista diferente si está utilizando un navegador móvil. Decidí que me gustaría hacer esto utilizando filtros MVC aplicándolo a las acciones en las que quiero tener una vista móvil.Cambiar la vista en un filtro ASP.NET MVC
Creo que esta redirección debe ocurrir en OnActionExecuted, sin embargo, el filterContext no contiene información sobre la vista, pero sí en OnResultExecuted, pero en este momento creo que ya es demasiado tarde para cambiar la vista.
¿Cómo puedo interceptar el nombre de vista y cambiar ViewResult?
Esto es lo que tengo en el resultado ejecutado y en lo que me gustaría tener trabajo en Acción Ejecutada.
public class MobilePageFilter : ActionFilterAttribute
{
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
if(filterContext.Result is ViewResult)
{
if (isMobileSite(filterContext.HttpContext.Session[SetMobile.SESSION_USE_MOBILE]))
{
ViewResult viewResult = (ViewResult)filterContext.Result;
string viewName = viewResult.ViewName;
filterContext.Result = new ViewResult
{
ViewName = "Mobile/" + viewName,
ViewData = viewResult.ViewData,
TempData = viewResult.TempData
};
}
}
base.OnResultExecuted(filterContext);
}
}
Agregue reglas de ruta en Global.cs – zsong