我在控制器中收到此错误。
我调用了IEnumerable
服务,并试图在控制器中使用它,但出现此错误。
public IEnumerable<User> GetUsers()
{
var userList = new List<User>();
userList.Add(new User()
{
Email = "testc@test.com",
Enabled = true,
PhoneNumber = "555-555-5555",
Username = "test"
});
userList.Add(new User()
{
Email = "user@domain.com",
Enabled = true,
PhoneNumber = "317-455-5555",
Username = "anotheruser"
});
return userList;
}
public ActionResult Details()
{
var user = _userService.GetUsers();
var model = new UserViewModel()
{
UserName = user.Username,
Enabled = user.Enabled
};
return View(model);
}
我希望从控制器的“详细信息”操作中获取用户信息以在视图中显示,这是我收到的错误消息。
答案 0 :(得分:2)
您的user
变量实际上是用户的列表,但是您试图访问实际用户实例上的属性,而不是列表。换句话说,您需要枚举用户列表:
var users = _userService.GetUsers();
var model = new List<UserViewModel>();
foreach (var user in users)
{
model.Add(new UserViewModel
{
UserName = user.Username,
Enabled = user.Enabled
});
}
或更简单地说:
var model = _userService.GetUsers().Select(user => new UserViewModel
{
UserName = user.Username,
Enabled = user.Enabled
});
LINQ Select
方法枚举集合,并将lambda应用于每个项目,并返回由lambda的返回值组成的新列表。