controller – 基类中的ExecuteCore()在MVC 4 beta中未触发

我有一个基本控制器类:

和所有我的其他控制器继承这个BaseClass像这样

所有这些工作伟大的MVC3(测试今天,它真的工作),但似乎在BaseController的ExecuteCore不会被触发任何更多的MVC 4 beta。

任何想法?或者什么巨大已经改变了引擎盖下?非常感谢。

public class BaseController : Controller
{
    private string _myData;

    public string MyData
    {
        get
        {
            return _myData;
        }
    }

    protected override void ExecuteCore()
    {
        _myData = "I am doing something";

        base.ExecuteCore();
    }
}


public class HomeController : BaseController
{
    public ActionResult Index()
    {
        ViewBag.MyData = MyData;
        // Doing something with value in BaseClass

        return View();
    }
}

解决方法

我能够重现你的问题。看来ExecuteCore的用法被改变了。但我没有找到任何有关它的信息。我的猜测它与事实,现在的Controller实现IAsyncController而不是AsyncController。

但是,我发现了一个解决方法,以获得旧的行为与MVC4:

将此添加到BaseContoller:

protected override bool disableAsyncSupport
{
    get { return true; }
}

从MSDN页面DisableAsyncSupport(强调由我添加):

This flag is for backwards compatibility. ASP.NET MVC 4. allows a controller to support asynchronous patterns. This means ExecuteCore doesn’t get called on derived classes. Derived classes can override this flag and set to true if they still need ExecuteCore to be called.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....