Как правильно добавить функцию поиска в модель представления? - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь добавить функцию поиска в метод, где я могу искать пользователя по имени.Я до сих пор пробовал это, но я получаю сообщение об ошибке, которое я не полностью понимаю:

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> 'to' ims.Models.AdminViewModels.UsersAndRolesViewModel '.Существует явное преобразование (вам не хватает приведения?)

Эта ошибка выдается на

UserAndRoleViewModel = AllUsers.Where(s => s.FullName.Contains(searchString));

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Если вы пытаетесь вернуть список пользователей в View, попробуйте это

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))

возвращает список пользователей.Но ты назначил это модели.

0 голосов
/ 16 мая 2018

Это просто вызвано фундаментальным несоответствием типов: UserAndRoleViewModel имеет тип UsersAndRolesViewModel. AllUsers.Where(...) относится к типу IEnumerable<>. Я подозреваю, что вы хотите присвоить результат свойству UserAndRoleViewModel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...