【发布时间】:2017-10-13 20:30:29
【问题描述】:
我正在尝试使用 UserManager 的实例提取选定的用户,以便在视图中显示有关特定用户的详细信息。我正在尝试使用以下代码行:
var user = await _userManager.Users.SingleOrDefaultAsync(m => m.Id == id);
但是,这会产生以下错误:
“'await' 运算符只能在异步方法中使用。”
我真的很困惑,因为 SingleOrDefaultAsync 方法肯定是异步方法 - 线索就在名称中!当我将鼠标悬停在它上面时,它甚至会显示“等待”,那么为什么我不能在这种情况下使用“等待”关键字呢?
我试过只取出'await'关键字,然后它会编译,但如果我尝试访问视图,我会收到以下错误:
InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“System.Threading.Tasks.Task`1[MyProject.Models.ApplicationUser]”,但此 ViewDataDictionary 实例需要“MyProject.Models.ApplicationUser”类型的模型项'。
对于上下文,这是我的控制器方法:
//
// GET /Account/Details/5
public IActionResult Details(string id)
{
if (id == null)
{
return NotFound();
}
var user = _userManager.Users.SingleOrDefaultAsync(m => m.Id == id);
if (user == null)
{
return NotFound();
}
return View(user);
}
这是我的视图所期望的:
@model ApplicationUser
非常感谢任何帮助,如果这是一件我正在努力解决的非常简单的事情,我深表歉意,我仍然是 .Net 和 MVC 的初学者!
【问题讨论】:
标签: asp.net-mvc