Ответ 1
Попробуйте назначить токен area
для пустой строки:
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new {
action = "AppOffLine",
controller = "Home",
area = ""
}));
У меня есть 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
Можно ли это исправить?
Также есть способ уточнить, какой контроллер/действие перенаправить на использование Generics и строго типизированный код?
Попробуйте назначить токен area
для пустой строки:
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
}
}
}
и если вы хотите перенаправить на зону без зоны (например, /Home/Index
), установите 'area
' в пустую строку; как:
area=""