Я учусь использовать 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>
}
Я ожидаю, что списокрецепты, содержащие лук и чеснок, которые будут отображаться в индексе. Кажется, список будет отображаться, но он пуст, и я не знаю, как его заполнить.
Любая помощь очень ценится, спасибо!