首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在MVC中使用异步等待返回RedirectToAction (&A)

在MVC中使用异步等待返回RedirectToAction (&A)
EN

Stack Overflow用户
提问于 2016-12-05 14:17:15
回答 3查看 9.6K关注 0票数 6

我想使用.NET4.5中的异步和等待功能返回一个操作。我使用了以下代码。

代码语言:javascript
代码运行次数:0
运行
复制
public async Task<ActionResult> DisplayDashboard()
    {
        await Task.Run(() =>
        {
            if (true)
            {
                return RedirectToAction("Index", "Home");
            }
            else
            {
                return RedirectToAction("Error", "Home");
            }
        });            
    }

它给出了以下错误,“无法将lambda表达式转换为委托类型'System.Action‘,因为块中的一些返回类型不能隐式转换为委托返回类型”。

谁能建议我如何使用任务执行RedirectToAction。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-05 14:45:45

代码语言:javascript
代码运行次数:0
运行
复制
    public async Task<ActionResult> DisplayDashboard()
    {
        return await Task.Run<ActionResult>(() =>
        {
            if (true)
            {
                return RedirectToAction("Index", "Home");
            }
            else
            {
                return View("Index");
            }
        });
    }
票数 9
EN

Stack Overflow用户

发布于 2016-12-05 16:45:37

为什么你需要这个代码异步?如果您所需要的只是让此方法返回一个Task来满足某些接口要求,那么可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
public Task<ActionResult> DisplayDashboard()
{
        ActionResult result;
        if (true)
        {
            result = RedirectToAction("Index", "Home");
        }
        else
        {
            result = View("Index");
        }
        return Task.FromResult(result);
    }

Task.Run()实际上会使用与您传递给它的代码不同的线程。在这里,您似乎不需要这样做。

票数 3
EN

Stack Overflow用户

发布于 2019-05-22 18:11:43

这是旧的,但这是谷歌返回的第一个值得纠正的结果。无法继续从RedirectToAction()或View()返回,所以为什么还要等待结果。因此,不需要人为地使用Task.Run()来等待它。async关键字已经将任何返回提升到任务中。生成的代码更加整洁。

代码语言:javascript
代码运行次数:0
运行
复制
public async Task<ActionResult> DisplayDashboard()
{
    if (true)
    {
        return RedirectToAction("Index", "Home");
    }
    else
    {
        return View("Error");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40968182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档