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

asp.net-mvc – 总是使用ASP.NET MVC AsyncController而不是Cont

发布时间:2020-12-16 07:27:21 所属栏目:asp.Net 来源:网络整理
导读:我们有一系列ASP.NET MVC控制器,它们都继承自单个基本控制器(继承自Controller类).我们现在正在考虑创建一些异步操作,并且想知道如果我们只是将基本控制器更改为继承自AsyncController而不是Controller(意味着我们所有的控制器都将继承自AsyncController),我
我们有一系列ASP.NET MVC控制器,它们都继承自单个基本控制器(继承自Controller类).我们现在正在考虑创建一些异步操作,并且想知道如果我们只是将基本控制器更改为继承自AsyncController而不是Controller(意味着我们所有的控制器都将继承自AsyncController),我们是否会遇到任何麻烦.

解决方法

杰斯,

在我看来,当你遵循以下约定时,asynch功能只会被调用,你不会受到伤害:

public class PortalController : AsyncController
{
    public void NewsAsync(string city)
    {

        AsyncManager.OutstandingOperations.Increment();
        NewsService newsService = new NewsService();
        newsService.GetHeadlinesCompleted += (sender,e) =>
        {
            AsyncManager.Parameters["headlines"] = e.Value;
            AsyncManager.OutstandingOperations.Decrement();
        };
        newsService.GetHeadlinesAsync(city);
    }

    public ActionResult NewsCompleted(string[] headlines)
    {
        return View("News",new ViewStringModel
        {
            NewsHeadlines = headlines
        });
    }
}

惯例是在命名中添加News * Async *和News * Completed *部分.

看到:

async controllers in asp.net mvc 2

观察控制器类现在派生自AsyncController而不是Controller.此外,新闻动作方法已被拆分为名为NewsAsync和NewsCompleted的方法,这些方法与异步页面中的Begin和End方法类似.逻辑上,控制器仍然公开名为News的单个操作方法.但在物理上,方法实现已经使用整个.NET框架中使用的异步模式的变体进行了分解.

如果您未在继承的控制器代码中更改任何内容,则不会启动异步激活.但是,正如罗伯特上面所说的那样(或者下面可能是:-)),你可以根据需要来装饰行动,以保持意图清晰,但是,我个人认为会议应该清楚地表明这一点.

当然值得辩论.

(编辑:李大同)

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

    推荐文章
      热点阅读