Как получить ключ и значение из десериализованного json, создать из него список и привязать к элементу <slelect> В представлении
Я пытаюсь привязать результат действия контроллера к элементу на странице cshtml, но результатом является только перенастройка пустого списка.
по каждому элементу (значения VAR в allcountriesResult.Данных.Страны)
Как получить ключ и значение из вышесказанного и назначить "текст" и "значение", чтобы вернуть список, который теперь можно привязать к странице просмотра.
смотрите мой контроллер и страницу просмотра ниже
Заранее спасибо
Что я уже пробовал:
---Метод и модель контроллера
<pre>using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using Newtonsoft.Json; public class ResponseModel { public string colour { get; set; } public string shape { get; set; } public JsonData Data { get; set; } } public class JsonData { public Dictionary<string, string> People { get; set; } } public async Task<List<ResponseModel>> GetListofPeople() { List<ResponseModel> allpeople = new List<ResponseModel>(); using ( var client = new HttpClient()) { client.BaseAddress = new Uri(BaseUrl); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage Res = await client.GetAsync("some-endpoint"); if (Res.IsSuccessStatusCode) { var Response = Res.Content.ReadAsStringAsync().Result; var allpeopleResult = JsonConvert.DeserializeObject<ResponseModel>(Response); foreach (var keyValue in allpeopleResult.Data.people) { var item = new ResponseModel(); allpeople.Add(item); allpeople.Add(new ResponseModel() { Text = keyValue.Key, Value = keyValue.Value }); } } return allpeople; } }
-----Просмотр кода
<pre> <select id="peopleSelection" > <option value="">@*-- Select --*@</option> </select> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script type="text/javascript"> $(function () { var ddlpeoples = $("#peopleSelection"); ddlpeoples.empty().append('<option selected="selected" value="0" disabled = "disabled">Loading.....</option>'); $.ajax({ type: "GET", url: "/Home/GetListofPeople", data: '{}', contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { ddlpeoples.empty().append('<option selected="selected" value="0">choice...</option>'); $.each(response, function () { ddlpeoples.append($("<option></option>").val(this['Value']).html(this['Text'])); }); }, failure: function (response) { alert(response.responseText); }, error: function (response) { alert(response.responseText); } }); }); </script>
Gerry Schmitz
Вы возвращаете новый "вид" со своим списком.
Ваш текущий "код просмотра" делает слишком много; и ваши контроллеры не делают достаточно (IMO).
bolaabiks
Пожалуйста, не могли бы вы подробнее рассказать об этом?
Gerry Schmitz
Существуют "типы представлений": (редактировать / просматривать) "форма"; список; "диалог" и т. д.
Ваш "ответ" в этом случае (кажется) должен быть "списком". Я не говорю, что вы "неправы"; это ваш "образец" ...
https://www.c-sharpcorner.com/UploadFile/deveshomar/simple-way-of-binding-list-of-objects-to-view-using-mvc/