RedirectToAction到ASP.NET MVC中的异步方法

时间:2019-06-28 13:42:22

标签: c# asp.net-mvc async-await

我有一个AccountController和一个HomeController,并且有一个IndexAsync()动作

如何正确地从AccountController AdminUserProfil 操作重定向到HomeController IndexAsync 操作?

public async Task<ActionResult> AdminUserProfil(AdminUserViewModel viewModel)
{
    // ...
    if (SomeCondition)
    {
        return this.RedirectToAction<HomeController>(h => h.IndexAsync());
    }
    // ...
}

如果我按原样使用它,则会收到警告:

  

CS4014 由于未等待此调用,因此将执行当前   方法在调用完成之前继续。考虑应用   'await'运算符以调用结果。

enter image description here

1 个答案:

答案 0 :(得分:2)

您实际上是在示例中执行操作。您可以使用类似这样的方法来重定向到该操作,而不是执行该操作:

return RedirectToAction(nameof(Controller.ActionName),
                        nameof(Controller).Replace("Controller", ""));

// or hardcode controller name
return RedirectToAction(nameof(Controller.ActionName),
                        "Home");

如果您需要返回任务,也可以

var result = RedirectToAction(..., ...);
return Task.FromResult(result);