Поставлен вопрос о том, как поместить элементы из данных API в список, чтобы отобразить их в виде - PullRequest
0 голосов
/ 11 ноября 2019

Я учусь использовать API с API RecipePuppy и пытаюсь отобразить результаты на веб-странице. Я не могу получить отдельные результаты в список для их отображения.

Это в контроллере и работает нормально:

public string GetData()
        {
            HttpWebRequest request = WebRequest.CreateHttp("http://www.recipepuppy.com/api/?i=onions,garlic&q=omelet&p=3");
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader rd = new StreamReader(response.GetResponseStream());
            string ApiText = rd.ReadToEnd();

            return ApiText;
        }

Это то, что я думаю, у меня естьпроблемы с. Также в контроллере. Я просто не совсем уверен, что правильно понял всю идею JToken. Рецепт - модель, созданная мной для хранения объекта.

   public List<Recipe> ConvertAPItoRecipes(string APIText)
        {
            JToken t = JToken.Parse(APIText);
            Recipe r = new Recipe();
            List<JToken> recipes = t["title"].ToList();
            //r.Title = t["title"].ToString();
            List<Recipe> r2 = new List<Recipe>();

            foreach(JToken x in recipes)
            {
                Recipe re = new Recipe();
                re.Title = x["title"].ToString();
                string temp = x["ingredients"].ToString();
                List<string> temp2 = temp.Split(',').ToList();
                re.Ingredients = temp2;
                r2.Add(re);
            }

            return r2;
        }

Вот действие в контроллере. Я добавил объект, чтобы посмотреть, правильно ли отображается список

public IActionResult Index()
        {
            List<Recipe> recipes = ConvertAPItoRecipes(GetData());
            Recipe r = new Recipe();

            r.Title = "Steamed Hams";
            recipes.Add(r);
            ViewBag.num = recipes.Count();
            return View(recipes);
        }


Вот вид. Я добавил viewbag.num, чтобы перечислить количество элементов в списке только для того, чтобы подтвердить, что он пуст (он читает 1 с объектом «steam hams», который я добавил сам.

@model List<Recipe>

@ViewBag.num
@foreach (var item in Model)
{
<div>
    @Html.DisplayFor(modelItem => item.Title) 
</div>
}

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

Любая помощь очень ценится, спасибо!

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