在MVC 5中没有触发基方法
本文关键字:方法 MVC | 更新日期: 2023-09-27 18:11:06
我有以下基本控制器
public class BaseController : Controller
{
protected override void Execute(RequestContext requestContext)
{
base.Execute(requestContext);
}
}
实现是
public class HomeController : BaseController { }
我们从mvc3升级到mvc5,在mvc5中这个方法没有被调用这里需要做什么?
不完全清楚你想要什么,但这里有几个问题。你的普通控制器会继承你的BaseController吗?
public class MyController : BaseController
我不明白这行是什么意思....
var global = requestContext.HttpContext.Request.QueryString["global"] == null ? true : false;
你设置了值,然后不对它做任何事情。您是否打算将此值存储在基本控制器中,以便可以从所有其他控制器访问它?
当然,如果在querystring中缺少global,那么它应该是false而不是true。
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);
}
}
这个问题的标题导致我在这里,但它不是真正相同的问题,我正在经历(即覆盖的Execute
方法在一个基础控制器类不被调用在MVC 4/5网站)。
如果这是你也有问题,这是我找到的解决方案。随着异步支持的引入,这些方法的调用方式似乎发生了变化。而不是覆盖Execute
方法,你应该覆盖OnActionExecuted
方法代替。
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
}