Как я могу асинхронно отправлять данные с контроллера на страницу бритвы? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь получить данные из API на своей странице бритвы, чтобы использовать эти данные. Я успешно получил данные из API с помощью асинхронной функции и пытаюсь отправить их на страницу бритвы, но они не передаются на страницу бритвы с помощью вызова обратного просмотра, даже если эти данные присутствуют при передаче дюймы

Я установил точку останова здесь, и все данные находятся в объекте return View(standingsParent);, но после передачи на страницу @Model.ToString(); равно NullReferenceException

Я думал об удалении асинхронной функции, но думал, что это замедлит мой сайт из-за ожидания ответа API. Я не пробовал ничего более заслуживающего упоминания и тщательно исследовал это без всякой удачи.

Здесь я возвращаю вид

StandingsParent standingsParent;

private async Task LoadTable()
{
    standingsParent = await Football.LoadFootballTable();
}

public async Task<ViewResult> Table()
{
    await LoadTable();
    return View(standingsParent);
}

Загрузить табличную функцию

public static async Task<StandingsParent> LoadFootballTable(string tableId = "PL")
{
    string url = $"https://api.football-data.org/v2/competitions/{tableId}/standings?standingType=TOTAL";
    HttpResponseMessage response = await ApiHelper.ApiClient.GetAsync(url);
    using (response)
    {   
        if (response.IsSuccessStatusCode)
        {
            //Region region = await response.Content.ReadAsAsync<Region>();
            StandingsParent standings = await response.Content.ReadAsAsync<StandingsParent>();
            return standings;
        }
        else
        {
            throw new System.Exception(response.ReasonPhrase);
        }
    }
}

APIClient

public static HttpClient ApiClient { get; set; }

public static void InitialiseClient()
{
    ApiClient = new HttpClient();
    ApiClient.DefaultRequestHeaders.Accept.Clear();
    ApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    ApiClient.DefaultRequestHeaders.Add("X-Auth-Token", "MyToken");
}

My View

@page
@using CoreWebApp.Models.Football
@model StandingsParent


<h1>Table</h1>

<p>
    @Model.ToString();
</p>

Я ожидаю, что какой-то вывод просто покажет, что данные предназначены для манипулирования, но все, что я сейчас получаю, это NullReferenceException

Ссылка на объект не установлена ​​для экземпляра объекта.

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