MVC - Как приостановить цикл в контроллере для пользовательского ввода, а затем продолжить, как только он пройдет - PullRequest
0 голосов
/ 12 октября 2018

Я разрабатываю личный интерфейс для своего медиа-сервера, который предполагает использование Entity Framework Core, и добавляю фильмы с моего медиа-сервера в базу данных.Пока у меня все работает так, как я хочу, где я могу вручную искать фильм, искать в TMDB с помощью API и сохранять фильмы / студии в моей БД.Однако я хочу выполнить действие под названием «Очистить», которое, ну, в общем, «очистит» мой медиасервер от списка фильмов, проверит, существуют ли они в моей БД, и, если нет, произведет поиск этих фильмов на TMDB исохранить их автоматически.У меня также это работает ... вроде.

Например, у меня будет список, который будет проходить по циклу в контроллере 'Scrape', и этот список представляет собой список фильмов, которые нужнодля поиска, так:

  • Мстители: Бесконечная война
  • Мстители
  • Трон
  • Гарри Поттер

Я запускаю список через цикл foreach (), и для каждого элемента я прохожу процедуру поиска, и я могу проверить, сколько результатов есть.Теперь я столкнулся с проблемой.Если длина результата больше одного, мне нужно, чтобы пользователь мог просматривать эти результаты в середине цикла, выбрать фильм, а затем добавить выбранный фильм.Я могу циклически проходить через свой Список и добавлять все фильмы, которые имеют только один результат, но это те, которые имеют несколько.Например, «Tron» будет возвращать более одного результата, и пользователь должен определить, какую версию Tron он хочет добавить.

Итак, это контроллер:

        List<string> items = NetworkScrape.ScrapeFolders();

        foreach (var item in items)
        {
            //Results from the movie search
            SearchContainer<SearchMovie> Results = client.SearchMovieAsync(item).Result;
            if (Results.Results.Count == 0)
            {
                Console.WriteLine(item + " could not be found.");
                continue;
            }
            if (Results.Results.Count == 1)
            {
                Console.WriteLine(item + " only has one entry, auto add.");
                MoviesSelectViewModel vm = new MoviesSelectViewModel
                {
                    TMDBid = Results.Results[0].Id
                };

                //Add the movie to the DB
                await Create(vm);
                continue;
            }
            if (Results.Results.Count > 1)
            {
                Console.WriteLine(item + " has more than one entry, manual input required.");
                //This is where the user would select the film
                continue;
            }
        }

У меня есть все WriteLine только для тестирования, а «items» - это список фильмов для поиска.В последнем случае использования внизу, если результаты больше 1, я хочу передать «Results.Results» в представление, где пользователю отображается таблица результатов поиска, в которой они могут выбирать, но я неЯ не знаю, как заставить цикл foreach ожидать этого результата из представления, и даже если бы я мог остановить цикл, я точно не знаю, как я могу сообщить циклу, когда можно продолжить.Я пытался подождать, но вы не можете сделать это с помощью View, поэтому я действительно потерян.

Извините за большой, длинный пост, но я просто подумал, что предоставлю как можно больше информации, чтобы помочь проиллюстрироватьмоя проблема, потому что я полностью потерянБуду признателен за любую помощь, или даже лучший способ сделать это.

...