我有这个ActionFilter

public class AppOfflineFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.ActionDescriptor.ActionName != "AppOffLine" &&
            filterContext.HttpContext.Request.UserHostName != "127.0.0.1")
        {
            filterContext.Result = new RedirectToRouteResult(
                 new RouteValueDictionary(
                     new  { action = "AppOffLine", Controller = "Home" }));
        }
    }
}

它从不位于区域下的起始页开始工作,也不从区域开始工作,因为它将重定向到/ Area / Home / Appoffline而不是/ Home / AppOffline

可以解决吗?

还有一种确定使用泛型和强类型代码重定向到哪个 Controller / Action 的方法吗?

最佳答案

尝试将area路由 token 分配给一个空字符串:

filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {
    action = "AppOffLine",
    controller = "Home",
    area = ""
}));

10-08 13:01