Как получить доступ к информации из списка типа для отображения в представлении - PullRequest
0 голосов
/ 17 марта 2020

Как мне go взять информацию из Списка и заполнить таблицу выбранной страной? Я могу получить доступ к названию каждой страны, чтобы заполнить раскрывающийся список и добавить альфа-код 3di git в качестве идентификатора, но я не знаю, как получить доступ к остальной информации, полученной из API. Я знаю, что это, вероятно, очень простое решение, но я не могу понять, насколько я понимаю. (РЕДАКТИРОВАТЬ: В представлении я думал об использовании события onclick для захвата идентификатора выбранной страны из списка для отображения информации, но я не уверен, как реализовать это в c#)

Я могу сделать вызов через API через контроллер:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using CountryViewer.Models;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using Microsoft.CodeAnalysis;
using System.Diagnostics;

namespace CountryUI.Controllers
{
    public class HomeController : Controller
    {

        string Baseurl = "https://restcountries.eu/rest/v2/all";


        public async Task<ActionResult> Index()
        {
            List<CountryModel> country = new List<CountryModel>();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Baseurl);

                client.DefaultRequestHeaders.Clear();
                //Define request data format  
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                HttpResponseMessage Res = await client.GetAsync("https://restcountries.eu/rest/v2/all");

                if (Res.IsSuccessStatusCode)
                {
                    var CountryResponse = Res.Content.ReadAsStringAsync().Result;
                    country = JsonConvert.DeserializeObject<List<CountryModel>>(CountryResponse);


                }

                return View(country);
            }

        }


    }

}

Затем я могу смоделировать эту информацию в виде списка

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace CountryViewer.Models
{
    public class CountryModel
    {
        public CountryModel()
        {
            Currencies = new List<CurrencyModel>();
        }

        public CountryModel(string alpha3Code, string name, int population, string flag, string[] timeZones, string capital, List<CurrencyModel> currencies, string[] borders)
        {
            Alpha3Code = alpha3Code ?? throw new ArgumentNullException(nameof(alpha3Code));
            Name = name ?? throw new ArgumentNullException(nameof(name));
            Population = population;
            Flag = flag ?? throw new ArgumentNullException(nameof(flag));
            TimeZones = timeZones ?? throw new ArgumentNullException(nameof(timeZones));
            Capital = capital ?? throw new ArgumentNullException(nameof(capital));
            Currencies = currencies ?? throw new ArgumentNullException(nameof(currencies));
            Borders = borders ?? throw new ArgumentNullException(nameof(borders));
        }



        //Alpha3code
        public string Alpha3Code { get; set; }
        //country name
        public string Name { get; set; }
        //population
        public int Population { get; set; }
        //public string Languages { get; set; }
        //flag
        public string Flag { get; set; }
        //timezone
        public string[] TimeZones { get; set; }
        //capital
        public string Capital { get; set; }
        //currency
        public List<CurrencyModel> Currencies { get; set; }
        ////bordering countries
        public string[] Borders { get; set; }
    }

    public partial class CurrencyModel
    {

        public string Code { get; set; }

        public string Name { get; set; }

        public string Symbol { get; set; }
    }
}

Затем я могу получить доступ к этой информации в просмотреть и отобразить список названий стран для выбора пользователем.

image

JSON выглядит следующим образом:

[
    {
        "name": "Afghanistan",
        "topLevelDomain": [
            ".af"
        ],
        "alpha2Code": "AF",
        "alpha3Code": "AFG",
        "callingCodes": [
            "93"
        ],
        "capital": "Kabul",
        "altSpellings": [
            "AF",
            "Afġānistān"
        ],
        "region": "Asia",
        "subregion": "Southern Asia",
        "population": 27657145,
        "latlng": [
            33.0,
            65.0
        ],
        "demonym": "Afghan",
        "area": 652230.0,
        "gini": 27.8,
        "timezones": [
            "UTC+04:30"
        ],
        "borders": [
            "IRN",
            "PAK",
            "TKM",
            "UZB",
            "TJK",
            "CHN"
        ],
        "nativeName": "افغانستان",
        "numericCode": "004",
        "currencies": [
            {
                "code": "AFN",
                "name": "Afghan afghani",
                "symbol": "؋"
            }
        ],
        "languages": [
            {
                "iso639_1": "ps",
                "iso639_2": "pus",
                "name": "Pashto",
                "nativeName": "پښتو"
            },
            {
                "iso639_1": "uz",
                "iso639_2": "uzb",
                "name": "Uzbek",
                "nativeName": "Oʻzbek"
            },
            {
                "iso639_1": "tk",
                "iso639_2": "tuk",
                "name": "Turkmen",
                "nativeName": "Türkmen"
            }
        ],
        "translations": {
            "de": "Afghanistan",
            "es": "Afganistán",
            "fr": "Afghanistan",
            "ja": "アフガニスタン",
            "it": "Afghanistan",
            "br": "Afeganistão",
            "pt": "Afeganistão",
            "nl": "Afghanistan",
            "hr": "Afganistan",
            "fa": "افغانستان"
        },
        "flag": "https://restcountries.eu/data/afg.svg",
        "regionalBlocs": [
            {
                "acronym": "SAARC",
                "name": "South Asian Association for Regional Cooperation",
                "otherAcronyms": [],
                "otherNames": []
            }
        ],
        "cioc": "AFG"
    },
    {
        "name": "Åland Islands",
        "topLevelDomain": [
            ".ax"
        ],
        "alpha2Code": "AX",
        "alpha3Code": "ALA",
        "callingCodes": [
            "358"
        ],
        "capital": "Mariehamn",
        "altSpellings": [
            "AX",
            "Aaland",
            "Aland",
            "Ahvenanmaa"
        ],
        "region": "Europe",
        "subregion": "Northern Europe",
        "population": 28875,
        "latlng": [
            60.116667,
            19.9
        ],
        "demonym": "Ålandish",
        "area": 1580.0,
        "gini": null,
        "timezones": [
            "UTC+02:00"
        ],
        "borders": [],
        "nativeName": "Åland",
        "numericCode": "248",
        "currencies": [
            {
                "code": "EUR",
                "name": "Euro",
                "symbol": "€"
            }
        ],
        "languages": [
            {
                "iso639_1": "sv",
                "iso639_2": "swe",
                "name": "Swedish",
                "nativeName": "svenska"
            }
        ],
        "translations": {
            "de": "Åland",
            "es": "Alandia",
            "fr": "Åland",
            "ja": "オーランド諸島",
            "it": "Isole Aland",
            "br": "Ilhas de Aland",
            "pt": "Ilhas de Aland",
            "nl": "Ålandeilanden",
            "hr": "Ålandski otoci",
            "fa": "جزایر الند"
        },
        "flag": "https://restcountries.eu/data/ala.svg",
        "regionalBlocs": [
            {
                "acronym": "EU",
                "name": "European Union",
                "otherAcronyms": [],
                "otherNames": []
            }
        ],
        "cioc": ""
    },
    {
        "name": "Albania",
        "topLevelDomain": [
            ".al"
        ],
        "alpha2Code": "AL",
        "alpha3Code": "ALB",
        "callingCodes": [
            "355"
        ],
        "capital": "Tirana",
        "altSpellings": [
            "AL",
            "Shqipëri",
            "Shqipëria",
            "Shqipnia"
        ],
        "region": "Europe",
        "subregion": "Southern Europe",
        "population": 2886026,
        "latlng": [
            41.0,
            20.0
        ],
        "demonym": "Albanian",
        "area": 28748.0,
        "gini": 34.5,
        "timezones": [
            "UTC+01:00"
        ],
        "borders": [
            "MNE",
            "GRC",
            "MKD",
            "KOS"
        ],
        "nativeName": "Shqipëria",
        "numericCode": "008",
        "currencies": [
            {
                "code": "ALL",
                "name": "Albanian lek",
                "symbol": "L"
            }
        ],
        "languages": [
            {
                "iso639_1": "sq",
                "iso639_2": "sqi",
                "name": "Albanian",
                "nativeName": "Shqip"
            }
        ],
        "translations": {
            "de": "Albanien",
            "es": "Albania",
            "fr": "Albanie",
            "ja": "アルバニア",
            "it": "Albania",
            "br": "Albânia",
            "pt": "Albânia",
            "nl": "Albanië",
            "hr": "Albanija",
            "fa": "آلبانی"
        },
        "flag": "https://restcountries.eu/data/alb.svg",
        "regionalBlocs": [
            {
                "acronym": "CEFTA",
                "name": "Central European Free Trade Agreement",
                "otherAcronyms": [],
                "otherNames": []
            }
        ],
        "cioc": "ALB"
    },
    {
        "name": "Algeria",
        "topLevelDomain": [
            ".dz"
        ],
        "alpha2Code": "DZ",
        "alpha3Code": "DZA",
        "callingCodes": [
            "213"
        ],
        "capital": "Algiers",
        "altSpellings": [
            "DZ",
            "Dzayer",
            "Algérie"
        ],
        "region": "Africa",
        "subregion": "Northern Africa",
        "population": 40400000,
        "latlng": [
            28.0,
            3.0
        ],
        "demonym": "Algerian",
        "area": 2381741.0,
        "gini": 35.3,
        "timezones": [
            "UTC+01:00"
        ],
        "borders": [
            "TUN",
            "LBY",
            "NER",
            "ESH",
            "MRT",
            "MLI",
            "MAR"
        ],
        "nativeName": "الجزائر",
        "numericCode": "012",
        "currencies": [
            {
                "code": "DZD",
                "name": "Algerian dinar",
                "symbol": "د.ج"
            }
        ],
        "languages": [
            {
                "iso639_1": "ar",
                "iso639_2": "ara",
                "name": "Arabic",
                "nativeName": "العربية"
            }
        ],
        "translations": {
            "de": "Algerien",
            "es": "Argelia",
            "fr": "Algérie",
            "ja": "アルジェリア",
            "it": "Algeria",
            "br": "Argélia",
            "pt": "Argélia",
            "nl": "Algerije",
            "hr": "Alžir",
            "fa": "الجزایر"
        },
        "flag": "https://restcountries.eu/data/dza.svg",
        "regionalBlocs": [
            {
                "acronym": "AU",
                "name": "African Union",
                "otherAcronyms": [],
                "otherNames": [
                    "الاتحاد الأفريقي",
                    "Union africaine",
                    "União Africana",
                    "Unión Africana",
                    "Umoja wa Afrika"
                ]
            },
            {
                "acronym": "AL",
                "name": "Arab League",
                "otherAcronyms": [],
                "otherNames": [
                    "جامعة الدول العربية",
                    "Jāmiʻat ad-Duwal al-ʻArabīyah",
                    "League of Arab States"
                ]
            }
        ],
        "cioc": "ALG"
    },
    {
        "name": "American Samoa",
        "topLevelDomain": [
            ".as"
        ],
        "alpha2Code": "AS",
        "alpha3Code": "ASM",
        "callingCodes": [
            "1684"
        ],
        "capital": "Pago Pago",
        "altSpellings": [
            "AS",
            "Amerika Sāmoa",
            "Amelika Sāmoa",
            "Sāmoa Amelika"
        ],
        "region": "Oceania",
        "subregion": "Polynesia",
        "population": 57100,
        "latlng": [
            -14.33333333,
            -170.0
        ],
        "demonym": "American Samoan",
        "area": 199.0,
        "gini": null,
        "timezones": [
            "UTC-11:00"
        ],
        "borders": [],
        "nativeName": "American Samoa",
        "numericCode": "016",
        "currencies": [
            {
                "code": "USD",
                "name": "United State Dollar",
                "symbol": "$"
            }
        ],
        "languages": [
            {
                "iso639_1": "en",
                "iso639_2": "eng",
                "name": "English",
                "nativeName": "English"
            },
            {
                "iso639_1": "sm",
                "iso639_2": "smo",
                "name": "Samoan",
                "nativeName": "gagana fa'a Samoa"
            }
        ],
        "translations": {
            "de": "Amerikanisch-Samoa",
            "es": "Samoa Americana",
            "fr": "Samoa américaines",
            "ja": "アメリカ領サモア",
            "it": "Samoa Americane",
            "br": "Samoa Americana",
            "pt": "Samoa Americana",
            "nl": "Amerikaans Samoa",
            "hr": "Američka Samoa",
            "fa": "ساموآی آمریکا"
        },
        "flag": "https://restcountries.eu/data/asm.svg",
        "regionalBlocs": [],
        "cioc": "ASA"
    },
    {
        "name": "Andorra",
        "topLevelDomain": [
            ".ad"
        ],
        "alpha2Code": "AD",
        "alpha3Code": "AND",
        "callingCodes": [
            "376"
        ],
        "capital": "Andorra la Vella",
        "altSpellings": [
            "AD",
            "Principality of Andorra",
            "Principat d'Andorra"
        ],
        "region": "Europe",
        "subregion": "Southern Europe",
        "population": 78014,
        "latlng": [
            42.5,
            1.5
        ],
        "demonym": "Andorran",
        "area": 468.0,
        "gini": null,
        "timezones": [
            "UTC+01:00"
        ],
        "borders": [
            "FRA",
            "ESP"
        ],
        "nativeName": "Andorra",
        "numericCode": "020",
        "currencies": [
            {
                "code": "EUR",
                "name": "Euro",
                "symbol": "€"
            }
        ],
        "languages": [
            {
                "iso639_1": "ca",
                "iso639_2": "cat",
                "name": "Catalan",
                "nativeName": "català"
            }
        ],
        "translations": {
            "de": "Andorra",
            "es": "Andorra",
            "fr": "Andorre",
            "ja": "アンドラ",
            "it": "Andorra",
            "br": "Andorra",
            "pt": "Andorra",
            "nl": "Andorra",
            "hr": "Andora",
            "fa": "آندورا"
        },
        "flag": "https://restcountries.eu/data/and.svg",
        "regionalBlocs": [],
        "cioc": "AND"
    },
    {
        "name": "Angola",
        "topLevelDomain": [
            ".ao"
        ],
        "alpha2Code": "AO",
        "alpha3Code": "AGO",
        "callingCodes": [
            "244"
        ],
        "capital": "Luanda",
        "altSpellings": [
            "AO",
            "República de Angola",
            "ʁɛpublika de an'ɡɔla"
        ],
        "region": "Africa",
        "subregion": "Middle Africa",
        "population": 25868000,
        "latlng": [
            -12.5,
            18.5
        ],
        "demonym": "Angolan",
        "area": 1246700.0,
        "gini": 58.6,
        "timezones": [
            "UTC+01:00"
        ],
        "borders": [
            "COG",
            "COD",
            "ZMB",
            "NAM"
        ],
        "nativeName": "Angola",
        "numericCode": "024",
        "currencies": [
            {
                "code": "AOA",
                "name": "Angolan kwanza",
                "symbol": "Kz"
            }
        ],
        "languages": [
            {
                "iso639_1": "pt",
                "iso639_2": "por",
                "name": "Portuguese",
                "nativeName": "Português"
            }
        ],
        "translations": {
            "de": "Angola",
            "es": "Angola",
            "fr": "Angola",
            "ja": "アンゴラ",
            "it": "Angola",
            "br": "Angola",
            "pt": "Angola",
            "nl": "Angola",
            "hr": "Angola",
            "fa": "آنگولا"
        },
        "flag": "https://restcountries.eu/data/ago.svg",
        "regionalBlocs": [
            {
                "acronym": "AU",
                "name": "African Union",
                "otherAcronyms": [],
                "otherNames": [
                    "الاتحاد الأفريقي",
                    "Union africaine",
                    "União Africana",
                    "Unión Africana",
                    "Umoja wa Afrika"
                ]
            }
        ],
        "cioc": "ANG"
    },
    {
        "name": "Anguilla",
        "topLevelDomain": [
            ".ai"
        ],
        "alpha2Code": "AI",
        "alpha3Code": "AIA",
        "callingCodes": [
            "1264"
        ],
        "capital": "The Valley",
        "altSpellings": [
            "AI"
        ],
        "region": "Americas",
        "subregion": "Caribbean",
        "population": 13452,
        "latlng": [
            18.25,
            -63.16666666
        ],
        "demonym": "Anguillian",
        "area": 91.0,
        "gini": null,
        "timezones": [
            "UTC-04:00"
        ],
        "borders": [],
        "nativeName": "Anguilla",
        "numericCode": "660",
        "currencies": [
            {
                "code": "XCD",
                "name": "East Caribbean dollar",
                "symbol": "$"
            }
        ],
        "languages": [
            {
                "iso639_1": "en",
                "iso639_2": "eng",
                "name": "English",
                "nativeName": "English"
            }
        ],
        "translations": {
            "de": "Anguilla",
            "es": "Anguilla",
            "fr": "Anguilla",
            "ja": "アンギラ",
            "it": "Anguilla",
            "br": "Anguila",
            "pt": "Anguila",
            "nl": "Anguilla",
            "hr": "Angvila",
            "fa": "آنگویلا"
        },
        "flag": "https://restcountries.eu/data/aia.svg",
        "regionalBlocs": [],
        "cioc": ""
    },
    {
        "name": "Antarctica",
        "topLevelDomain": [
            ".aq"
        ],
        "alpha2Code": "AQ",
        "alpha3Code": "ATA",
        "callingCodes": [
            "672"
        ],
        "capital": "",
        "altSpellings": [],
        "region": "Polar",
        "subregion": "",
        "population": 1000,
        "latlng": [
            -74.65,
            4.48
        ],
        "demonym": "",
        "area": 1.4E7,
        "gini": null,
        "timezones": [
            "UTC-03:00",
            "UTC+03:00",
            "UTC+05:00",
            "UTC+06:00",
            "UTC+07:00",
            "UTC+08:00",
            "UTC+10:00",
            "UTC+12:00"
        ],
        "borders": [],
        "nativeName": "Antarctica",
        "numericCode": "010",
        "currencies": [
            {
                "code": "AUD",
                "name": "Australian dollar",
                "symbol": "$"
            },
            {
                "code": "GBP",
                "name": "British pound",
                "symbol": "£"
            }
        ],
        "languages": [
            {
                "iso639_1": "en",
                "iso639_2": "eng",
                "name": "English",
                "nativeName": "English"
            },
            {
                "iso639_1": "ru",
                "iso639_2": "rus",
                "name": "Russian",
                "nativeName": "Русский"
            }
        ],
        "translations": {
            "de": "Antarktika",
            "es": "Antártida",
            "fr": "Antarctique",
            "ja": "南極大陸",
            "it": "Antartide",
            "br": "Antártida",
            "pt": "Antárctida",
            "nl": "Antarctica",
            "hr": "Antarktika",
            "fa": "جنوبگان"
        },
        "flag": "https://restcountries.eu/data/ata.svg",
        "regionalBlocs": [],
        "cioc": ""
    },
    {
        "name": "Antigua and Barbuda",
        "topLevelDomain": [
            ".ag"
        ],...]

Существует еще JSON, но вы получаете намекают.

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