Ничего не происходит при доступе к асинхронной задаче из репозитория в asp.net ?

#c# #asp.net #asp.net-mvc #async-await

#c# #asp.net #asp.net-mvc #async-await

Вопрос:

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

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

Репозиторий:

    public async Task<List<Guests>> GetGuesteByAsync(string Search)
    {
        var list = GetAll();
        var listquery = from x in context.Guest select x;
        if (!string.IsNullOrEmpty(Search))
        {
            listquery = listquery.Where(x => x.FullName.Contains(Search) ||  x.Organisation.Contains(Search));
        }

        return await context.Guests.ToListAsync();
    }
  

Контроллер:

  [HttpGet]
    public async Task<ActionResult> Index(string Search)
    {
ViewData["Getsearchinput"] = EmpSearch;
        //List<Guests> listofguests = await repository.GetGuesteByAsync(Search);
        var res = await (repository.GetGuesteByAsync(Search));
        return View(res);

    }
  

Комментарии:

1. Что значит «ничего не происходит»? Зависает ли код на какой-то строке? Что на самом деле происходит?

2. Представление изменяет ссылку с вводом поиска, но список не обновляется

3. Какой список не обновляется?

4. Список, который генерируется из асинхронного метода, который вызывается из репозитория в контроллере.

5. Какой список вы проверяете, var list = GetAll(); не похоже, что он используется.

Ответ №1:

Это возвращает все записи.

 return await context.Guests.ToListAsync();
  

Я думаю, вам следует использовать свой запрос. Можете ли вы попробовать это?

 return await listquery.ToListAsync();