我有一个ASP.NET MVC项目,其中包含一些控制器、视图和操作等
我听说我应该能够使我的控制器操作异步而没有任何问题,但我真的很难在这种情况下返回视图。
我有一个名为UpdateUser()
的操作,它是异步的,并且有一些函数我希望使用await
关键字(还有更多的要添加(。完成这些操作后,我需要返回到一个视图,就像大多数控制器操作中一样:
public async Task Updateuser()
{
ApplicationUser usr = await _userManager.FindByNameAsync(User.Identity.Name);
string name = usr.UserName;
string email = usr.Email;
string UserEmail = name + email;
string hash = "";
using (var sha = new System.Security.Cryptography.SHA256Managed())
{
// Convert the string to a byte array first, to be processed
byte[] textBytes = System.Text.Encoding.UTF8.GetBytes(UserEmail);
byte[] hashBytes = sha.ComputeHash(textBytes);
// Convert back to a string, removing the '-' that BitConverter adds
hash = BitConverter
.ToString(hashBytes)
.Replace("-", String.Empty).ToLower();
}
return View();
}
所以在写return View();
的那一行,我的IDE对返回类型感到愤怒,因为返回类型必须是`Task。
那么,如何使用异步方法返回视图呢?
您应该使用IActionResult从MVC控制器的操作返回视图。您的方法应该与异步任务类似:
public async Task<IActionResult> Updateuser()
{
return View();
}