c# - 将搜索功能添加到视图模型的正确方法是什么?
问题描述
我正在尝试将搜索功能添加到可以按名称搜索用户的方法中。到目前为止,我已经尝试过了,但我收到了一个我不完全理解的错误:
public async Task<IActionResult> ListUsers(string searchString)
{
var AllUsers = _application.Users.ToList();
UsersAndRolesViewModel UserAndRoleViewModel = new UsersAndRolesViewModel();
List<UserAndRoleViewModel> AllUsersAndRoles = new List<UserAndRoleViewModel>();
foreach (var usr in AllUsers)
{
var model = new UserAndRoleViewModel
{
Id = usr.Id,
Email = usr.Email,
Roles = await _usermanager.GetRolesAsync(usr),
PhoneNumber = usr.PhoneNumber,
};
AllUsersAndRoles.Add(model);
}
UserAndRoleViewModel.UserAndRole = AllUsersAndRoles;
if (!String.IsNullOrEmpty(searchString))
{
UserAndRoleViewModel = AllUsers.Where(s => s.FullName.Contains(searchString));
}
return View(UserAndRoleViewModel);
}
这产生的错误是:
无法将类型“
System.Collections.Generic.IEnumerable<ims.Models.ApplicationUser>
”隐式转换为“ims.Models.AdminViewModels.UsersAndRolesViewModel”。存在显式转换(您是否缺少演员表?)
此错误产生于
UserAndRoleViewModel = AllUsers.Where(s => s.FullName.Contains(searchString));
解决方案
如果您尝试将用户列表返回到视图,请尝试此操作
if (!String.IsNullOrEmpty(searchString))
{
List<UserAndRoleViewModel > UserRoles = AllUsers.Where(s => s.FullName.Contains(searchString)).ToList();
}
或者,如果您想返回具有特定名称的单个用户,请尝试以下操作
if (!String.IsNullOrEmpty(searchString))
{
var UserRoles = AllUsers.SingleOrDefault(s => s.FullName == searchString);
}
AllUsers.Where(s => s.FullName.Contains(searchString))
返回用户列表。但是您将其分配给模型。
推荐阅读
- python - 如何将列中的元素拆分为python中的更多列
- javascript - 如何在沙盒 iframe 上允许 document.domain?
- javascript - 我的 heroku 应用程序没有在 heroku 上获得 postgresDB
- python - Django:ConnectionResetError:[Errno 54]
- android - Android Wear:无法将 DataItem 从可穿戴设备发送到手机
- bash - 尝试使用“排序”对括号中日期的文本文件进行排序
- c# - http.sys 中 GET 请求中查询参数的 URL 限制
- swift - 如何将值按顺序排列在数组中的标签上?
- ada - 通过编写递归程序绘制尺子 (Ada)
- c++ - 我正在为我祖母的生日开发一个 C++ 程序,但是我不断收到错误代码:错误 C2451