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

API POST请求返回结果未在视图中显示的问题排查求助

问题核心原因

  • 实体类结构与反序列化目标不匹配:你当前定义的Result类本身无任何公共属性,仅作为容器嵌套了Rootobject和Button两个子类。接口返回的JSON根层级对应Rootobject的属性,直接反序列化为Result类型时,所有返回字段无法匹配到对应属性,反序列化结果所有字段均为空,自然无法在视图展示。
  • 额外可排查点:可能存在JSON字段名与实体类属性名大小写不匹配、视图绑定时层级写错的问题。

解决方案

方案1:调整实体类结构(更常用)

删除嵌套的Rootobject类,把属性直接放到Result下:

public class Result
{
    public string SearchGuid { get; set; }
    public Button[] Buttons { get; set; }
    public string CaseRef { get; set; }

    public class Button
    {
        public string DisplayName { get; set; }
    }
}

原有反序列化逻辑不用修改,保持JsonConvert.DeserializeObject<Result>(apiResponse)即可。

方案2:修改反序列化目标类型

保留现有实体类结构,调整代码中反序列化的目标类型为Result.Rootobject:

if (token != null)
{
    client.SetBearerToken(token.AccessToken);
    Result.Rootobject result = new Result.Rootobject();
    
    var response = await client.PostAsJsonAsync(address, bodyJson, null);
    if (response.IsSuccessStatusCode)
    {
        string apiResponse = await response.Content.ReadAsStringAsync();
        // 反序列化目标改为嵌套的Rootobject类
        result = JsonConvert.DeserializeObject<Result.Rootobject>(apiResponse);
    }
    return View(result);
}
return View();

同时要把视图的模型声明同步修改为@model 你的命名空间.Result.Rootobject。

补充排查建议

  • 反序列化前打断点查看apiResponse的实际内容,确认JSON结构和属性名与实体类完全对应,存在命名差异的话可以给属性加[JsonProperty("JSON字段实际名称")]特性适配。
  • 视图中遍历按钮时要对应正确层级,示例写法:
@foreach (var button in Model.Buttons)
{
    <p>@button.DisplayName</p>
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:54:04