在OnActionExecuting控制器上,我正在尝试进行永久重定向。代码如下所示:
protected override void OnActionExecuting(ActionExecutingContext filterContext) {
var resolvedUrl = "http://www.cnn.com";
filterContext.Result = new RedirectResult(resolvedUrl);
filterContext.Result.ExecuteResult(filterContext);
return;
}
它不会立即重定向,因为此方法位于基类中,并且在return语句之后,将调用继承的类的OnActionExecuting
方法。
问题:我如何进行重定向并停在那里,而不是在继承的类中做任何事情。感谢。
注意:在子类(继承自base的类)中,我base.OnActionExecuting(filterContext);
中有OnActionExecuting
。
答案 0 :(得分:0)
您不应该在动作过滤器中调用ExecuteResult()。将filterContext.Result设置为非null值足以阻止MVC管道调用更多过滤器。
应该将子类型更改为:
base.OnActionExecuting(filterContext);
if (filterContext.Result != null) {
return; // something got short-circuited
}