bolaabiks Ответов: 0

Как получить ключ и значение из десериализованного 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/

0 Ответов