加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 19:06:40 所属栏目:asp.Net 来源:网络整理
导读:我有一个基本控制器类: 和所有我的其他控制器继承这个BaseClass像这样 所有这些工作伟大的MVC3(测试今天,它真的工作),但似乎在BaseController的ExecuteCore不会被触发任何更多的MVC 4 beta。 任何想法?或者什么巨大已经改变了引擎盖下?非常感谢。 publi
我有一个基本控制器类:

和所有我的其他控制器继承这个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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读