Как передать переменные обратно вызывающему методу в моем контроллере - PullRequest
0 голосов
/ 16 мая 2019

У меня есть одностраничное веб-приложение MVC с текстовым полем и кнопкой поиска. В конечном итоге я пытаюсь получить список видео, которые находит API YouTube, на основе строкового значения, которое ищет пользователь.

После нажатия кнопки поиска вызывается метод DisplayVideos в домашнем контроллере. Значение строки, набираемой в текстовом поле, передается в этот метод, который вызывает другой метод с именем RunYouTube, в котором есть код для API, который находит список видео.

У меня есть модель YouTubeVideo, которая содержит 2 строковых свойства: одно для идентификатора видео, а другое для VideoTItle.

Я могу получить идентификатор и заголовок видео, но мне интересно, как я могу получить эту информацию (ytv1 или ytv.ID + ytv.VideoTitle) из метода RunYouTube и обратно в HomeController, чтобы я мог отобразить Информация о представлении.

[HttpPost]
    public async Task<ActionResult> DisplayVideos(string SearchValue)
    {
        if (ModelState.IsValid)
        {
            YouTubeVideo ytv = new YouTubeVideo();
            SearchYoutube searchObject = new SearchYoutube();
            await searchObject.RunYouTube(SearchValue);

        }

        return View("Index");
    }


public class SearchYoutube
{
    IList<YouTubeVideo> ytvl = new List<YouTubeVideo>();
    YouTubeVideo ytv = new YouTubeVideo();
    public async Task RunYouTube(string searchword)
    {
        var youtubeService = new YouTubeService(new BaseClientService.Initializer()
        {
            ApiKey = "AIzaSyCa5sqGxd-wpYHH3m_TN73WxJNOcm8AHfs",
            ApplicationName = this.GetType().ToString()
        });

        var searchListRequest = youtubeService.Search.List("snippet");
        searchListRequest.Q = searchword; 
        searchListRequest.MaxResults = 50;

        // Call the search.list method to retrieve results matching the specified query term.
        var searchListResponse = await searchListRequest.ExecuteAsync();

        List<string> videos = new List<string>();
        List<string> channels = new List<string>();
        List<string> playlists = new List<string>();

        // Add each result to the appropriate list, and then display the lists of
        // matching videos, channels, and playlists.
        foreach (var searchResult in searchListResponse.Items)
        {
            switch (searchResult.Id.Kind)
            {
                case "youtube#video":
                    videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));

                    ytv.Id = searchResult.Id.VideoId;
                    ytv.VideoTitle = searchResult.Snippet.Title;
                    ytvl.Add(ytv);

                    break;



                    //case "youtube#channel":
                    //    channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));
                    //    break;

                    //case "youtube#playlist":
                    //    playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId));
                    //    break;
            }
        }

        //Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos)));
       // Console.WriteLine(String.Format("Channels:\n{0}\n", string.Join("\n", channels)));
        //Console.WriteLine(String.Format("Playlists:\n{0}\n", string.Join("\n", playlists)));
    }
}

home controller

model

1 Ответ

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

как я могу получить эту информацию (ytv1 или ytv.ID + ytv.VideoTitle) из метода RunYouTube и вернуться в HomeController, чтобы я мог отображать информацию в представлении.

Вы возврат это:

public async Task<IList<YouTubeVideo>> RunYouTube(string searchword)
{
  ...
  return ytv1;
}

public async Task<ActionResult> DisplayVideos(string SearchValue)
{
  if (ModelState.IsValid)
  {
    ...
    var ytv1 = await searchObject.RunYouTube(SearchValue);
  }

  return View("Index");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...