Blazor/Variables在@onclick任务后未更新



我真的是编程新手,所以如果我使用了不正确的术语,我很抱歉。我试图在Blazor应用程序中使用Riot的API,但我在页面上显示的变量在单击使用API设置值的按钮后不会更新为它们的值。这可能是因为我实例化对象的方式。

我正在尝试获取召唤师。名称召集师。级别以显示名称和级别,但它们在页面上是空的,即使在单击按钮后也是如此。我已经为这两项添加了一个手表,并确认它们正在返回代码中的值,但不知道为什么它们没有在页面上更新。是因为召唤师召唤师=新召唤师((这句话吗;?我试过将其设置为null,但结果出现了错误。

这是代码:

@using Newtonsoft.Json
@page "/"
@inject HttpClient http;
<h1>API Calling</h1>
<button class="btn btn-success" @onclick="@GetSummonerTask">Get Summoner</button>
<br>
<p>
    NAME: @summoner.Name
    <br>
    LEVEL: @summoner.Level
</p>

@code{
        Summoner summoner = new Summoner();
        private async Task GetSummonerTask()
        {
            SummonerInformation summonerInformation = new SummonerInformation();
            Summoner summoner = await summonerInformation.GetSummoner();
        }

        public class SummonerInformation
        {
            HttpClient client = new HttpClient();
            public async Task<Summoner> GetSummoner()
            {
                var summonerName = await client.GetAsync(new Uri("https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/weeatrocks?api_key={I have my API key here but taking out for obvious reasons}"));
                var JSON = await summonerName.Content.ReadAsStringAsync();
                Summoner summoner = JsonConvert.DeserializeObject<Summoner>(JSON);
                return summoner;
            }
        }

        public class Summoner
        {
            [JsonProperty(PropertyName = "name")]
            public string Name { get; set; }
            [JsonProperty(PropertyName = "summonerLevel")]
            public string Level { get; set; }
        }
    }

您将返回值分配给与类字段同名的局部变量。

private async Task GetSummonerTask()
{
    SummonerInformation summonerInformation = new SummonerInformation();
    summoner = await summonerInformation.GetSummoner(); 
   // await InvokeAsync(StateHasChanged); 
}

相关内容

  • 没有找到相关文章

最新更新