You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor点击按钮发起异步GET请求后HTML页面不更新问题

问题根因

你的theResponse始终为null和Blazor的绑定机制、StateHasChanged无关,核心是后端接口返回的JSON结构与前端反序列化使用的类型不匹配:
你在控制器中返回的是Json(new { data = yourdata }),最终响应的JSON结构为:

{
  "data": {
    "note1": "YouHitTheGetRequest"
  }
}

而你前端调用GetFromJsonAsync<Notes>时,会直接把响应根节点的JSON和Notes类做字段匹配,根节点下没有note1字段,只有data字段,自然反序列化失败得到null。

修复方案

两种方案任选其一即可:

方案1:修改后端接口(推荐)

直接返回Notes对象即可,ASP.NET Core的ApiController会自动将返回值序列化为符合要求的JSON,不需要额外包匿名对象:

[HttpGet]
[Route("[action]")]
[ActionName("Action4")]
public async Task<Notes> myStringResult1()
{
    Notes myNotes = new Notes();
    myNotes.note1 = "YouHitTheGetRequest";
    return myNotes;
}

方案2:适配后端结构修改前端代码

如果不需要改后端,可以新增一个通用包装类适配后端的返回结构,再提取目标数据:

// 新增通用响应包装类
public class ApiResponse<T>
{
    public T data { get; set; }
}

// 修改请求逻辑
private async Task TestPost()
{
    var apiRes = await Http.GetFromJsonAsync<ApiResponse<Notes>>("Test/Action4");
    theResponse = apiRes?.data;
}
其他注意事项

你的按钮命名为Test POST但实际发送的是GET请求,属于命名不规范的小问题,不影响运行但建议调整保持语义一致。

内容的提问来源于stack exchange,提问作者Novorfay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:45:03