Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在ASP.NET核心中实现API_C#_Asp.net_Asp.net Mvc_Asp.net Core_Asp.net Web Api - Fatal编程技术网

C# 无法在ASP.NET核心中实现API

C# 无法在ASP.NET核心中实现API,c#,asp.net,asp.net-mvc,asp.net-core,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Web Api,(注意:我是初学者!) 我正在做一个ASP.NET核心网站,必须在表格中显示所有国家的旅游咨询分数列表。 我无法使用旅行咨询API显示数据。每个国家都是一个单独的键,当我将JSON粘贴为类时,它们是不同的类 如何调用每个国家的类(例如,AU)并使用循环显示该国家下的数据?问题是有太多的国家,所以我希望使用一个循环。正如您在下面的代码中看到的,我一次只能显示一个国家,因为每个国家都是不同的类别 基本API端点:https://www.travel-advisory.info/api 可选参数:h

(注意:我是初学者!) 我正在做一个ASP.NET核心网站,必须在表格中显示所有国家的旅游咨询分数列表。 我无法使用旅行咨询API显示数据。每个国家都是一个单独的键,当我将JSON粘贴为类时,它们是不同的类

如何调用每个国家的类(例如,
AU
)并使用循环显示该国家下的数据?问题是有太多的国家,所以我希望使用一个循环。正如您在下面的代码中看到的,我一次只能显示一个国家,因为每个国家都是不同的类别

  • 基本API端点:
    https://www.travel-advisory.info/api
  • 可选参数:
    https://www.travel-advisory.info/api?countrycode=AU
    (将结果列表限制为单个国家/地区)
My
TravelAdvisory
管制员的操作方法:

public async Task<ActionResult> Index()
{
    string countryCode = "AU"; //I plan to have multiple country codes in a loop, 
//just haven't done so yet as I have issues showing the data for all country codes

    // Make Web API call to get a list of travel advisories
    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri("https://www.travel-advisory.info");

    HttpResponseMessage response = await client.GetAsync("/api"); 

    if (countryCode != null)
    {
        response = await client.GetAsync("/api?countrycode=" + countryCode);
    }

    if (response.IsSuccessStatusCode)
    {
        string data = await response.Content.ReadAsStringAsync();
        Rootobject model = JsonConvert.DeserializeObject<Rootobject>(data);

        float score = model.data.AU.advisory.score; 
 //here, I can only get the score for one country since class names are different.

        List<float> dataList = new List<float>();
        dataList.Add(score);

        TempData["Score"] = Convert.ToString(score);

        return View();
    }
    else
    {
        return View(new List<Data>());
    }
}
我的代码:

  • 型号:
  • 控制器:

您需要像这样向Index方法添加一个参数,并相应地编写您的逻辑

public async Task<ActionResult> Index(string countryCode)
{
编辑

您可以使用反射来获取所有属性并继续

Data data = ...;
foreach (var prop in data.GetType().GetProperties())
{
    ...
}

您可以将参数添加到索引方法中,如下所示:countrycode@viveknuna是的,我还没有加进去,因为我只是想弄清楚如何用循环打印每个国家代码的分数。谢谢!但是我怎样才能得到每个国家代码的分数呢?因为我只能按类检索分数(即model.data.AU.advision.score),每个国家/地区代码都是一个单独的类。if(response.issucessStatusCode){string data=wait response.Content.ReadAsStringAsync();Rootobject model=jsoninvert.DeserializeObject(data);float score=model.data.AU.advision.score;List dataList=new List();dataList.Add(score);TempData[“score”]=Convert.ToString(score);return View();}这是我检索分数的代码,但问题是我一次只能得到一个国家的分数,我不知道如何循环完成。谢谢!现在我得到一个错误,说对象不匹配目标类型,因为我是一个初学者,我不知道如何继续从你的答案和显示数据哈哈哈,很抱歉@Jan亲爱的,您需要付出一些努力,请确保StackOverFlow不是现成的解决方案。我已经回答了你的主要问题
HttpResponseMessage response = null;

if (string.IsNullOrEmpty(countryCode))
{
    response = await client.GetAsync("/api);
}
else
{
    response = await client.GetAsync("/api?countrycode=" + countryCode);
}
Data data = ...;
foreach (var prop in data.GetType().GetProperties())
{
    ...
}