Я хочу перенаправить пользователя в другое представление, если он использует мобильный браузер. Я решил, что хотел бы сделать это, используя фильтры MVC, применяя его к действиям, которые я хочу иметь мобильное представление.
Я полагаю, что это перенаправление должно произойти в OnActionExecuted, однако filterContext не содержит информации о представлении - оно, однако, в OnResultExecuted, но к этому времени я считаю, что уже слишком поздно менять представление.
Как перехватить имя представления и изменить ViewResult?
Это то, что я выполнил в результате и что мне хотелось бы, чтобы работа выполнялась в действии.
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);
}
}