Asp.net mvc 3 从其他区域使用RedirectToRouteResult重定向不起作用

Asp.net mvc 3 从其他区域使用RedirectToRouteResult重定向不起作用,asp.net-mvc-3,Asp.net Mvc 3,我有这个动作过滤器 public class AppOfflineFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext.ActionDescriptor.ActionName != "AppOffLine" && filt

我有这个动作过滤器

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

能修好吗


还有一种方法可以指定使用泛型和强类型代码重定向到哪个控制器/操作?

尝试将
区域
路由令牌分配给空字符串:

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

您必须指定如下区域:

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 = "YourAreaName" })); //<<<<THIS
        }
    }
}

谢谢,这节省了我的很多时间,而我正在挖周围的方式这样做:)砰!谢谢我被困在这一分钟正是我想要的。
area=""