我有以下基本控制器
public class BaseController : Controller
{
protected override void Execute(RequestContext requestContext)
{
base.Execute(requestContext);
}
}
实施
public class HomeController : BaseController { }
我们从mvc3升级到mvc5,在mvc5中这个方法没有被调用,需要在这里做什么?
答案 0 :(得分:2)
目前还不完全清楚你的追求是什么,但这里有几个问题。您的普通控制器是否继承了BaseController?
public class MyController : BaseController
我看不出这条线的意图....
var global = requestContext.HttpContext.Request.QueryString["global"] == null ? true : false;
您设置了值,然后不对其执行任何操作。您是否将此值存储在基本控制器中,以便可以从所有其他控制器访问它?
当然,如果查询字符串中缺少全局,那么它应该是假的而不是真的。
public class BaseController : Controller
{
public bool isGlobal { get; private set; }
protected override void Execute(RequestContext requestContext)
{
this.isGlobal = requestContext.HttpContext.Request.QueryString["global"] == null ? false : true;
base.Execute(requestContext);
}
}
答案 1 :(得分:1)
这个问题的标题引导我到这里,但它与我遇到的问题并不相同(即基础控制器类中被覆盖的Execute
方法未在MVC中调用4/5网站)。
如果这也是你遇到的问题,这就是我找到的解决方案。通过引入Async支持,调用这些方法的方式似乎已经改变。您应该覆盖Execute
方法,而不是覆盖OnActionExecuted
方法。
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
}