app*_*orm 76 asp.net-mvc redirecttoaction
RedirectToAction
受到保护,我们只能在行动中使用它.但是,如果我想在过滤器中重定向?
public class IsGuestAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!Ctx.User.IsGuest)
filterContext.Result = (filterContext.Controller as Controller)
.RedirectToAction("Index", "Home");
}
}
Run Code Online (Sandbox Code Playgroud)
veg*_*rby 101
RedirectToAction
只是一个构造a的辅助方法RedirectToRouteResult()
,所以你所做的只是创建一个新的RedirectToRouteResult()
传递RouteValueDictionary()
带有值的动作.
根据以下评论中@Domenic的代码完成示例:
public class IsGuestAttribute: ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!Ctx.User.IsGuest)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "controller", "Home" },
{ "action", "Index" }
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
Stu*_*ser 88
这是一个代码示例:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!Ctx.User.IsGuest)
{
RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
redirectTargetDictionary.Add("action", "Index");
redirectTargetDictionary.Add("controller", "Home");
filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43292 次 |
最近记录: |