C# 重定向到ASP.NET MVC中的异步方法的操作

C# 重定向到ASP.NET MVC中的异步方法的操作,c#,asp.net-mvc,async-await,C#,Asp.net Mvc,Async Await,我有一个AccountController和一个带有IndexAsync()操作的HomeController 如何正确地从AccountController的AdminUserProfil操作重定向到HomeController的IndexAsync操作 public async Task<ActionResult> AdminUserProfil(AdminUserViewModel viewModel) { // ... if (SomeCondition)

我有一个
AccountController
和一个带有
IndexAsync()
操作的
HomeController

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

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

公共异步任务

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

返回重定向到操作(name of(Controller.ActionName),
(控制器)的名称。替换(“控制器”、“控制器”);
//或硬编码控制器名称
返回重定向到操作(name of(Controller.ActionName),
“家”);
如果您需要返回任务,也可以

var result=RedirectToAction(…,…);
返回Task.FromResult(结果);

这取决于您。您可以将一个变量设置为应该返回的值,然后在底部返回它,或者您可以在知道能够返回时立即返回。请注意,
nameof(Controller)
将返回“HomeController”,但您希望字符串“Home”来实现此功能。最后,
返回重定向到操作(nameof(HomeController.IndexAsync),nameof(HomeController));
如果我理解得很好,应该可以完成这项工作是的,但正如@JessedeWit所指出的,
nameof(Controller)
还将包含单词
控制器
作为字符串的一部分。您可以删除该单词或对控制器字符串进行硬编码。我将更新答案。正确,重定向到操作时不涉及等待。您是否100%确定需要使该操作
异步
?它的任何其他部分是否等待inpaArticular?@Mariocach用一个(部分更新的)代码的图像更新了OP,
重定向操作
方法来自何处?如果只使用
(h=>h.IndexAsync)
(没有调用它的
()
),@KirkLarkin重定向操作是一个Mvc控制器扩展(MvcContrib.dll),它能工作吗没有
()