Изменение представления в фильтре ASP.NET MVC

Я хочу перенаправить пользователя в другое представление, если он использует мобильный браузер. Я решил, что я Я бы хотел сделать это с помощью фильтров MVC, применив их к действиям, которые я хочу иметь в мобильном представлении.

Я считаю, что это перенаправление должно происходить в OnActionExecuted, однако filterContext не содержит информации о представлении - однако он есть в OnResultExecuted, но к этому времени я считаю, что уже слишком поздно менять представление.

Как я могу перехватить имя представления и изменить ViewResult?

Это то, что я получил в результате, и что я бы хотелось бы, чтобы работа выполнялась в Action Exepted.

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);
    }
}
6
задан Sam 31 May 2011 в 08:51
поделиться