我真的是编程新手,所以如果我使用了不正确的术语,我很抱歉。我试图在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);
}