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

Angular与.NET Core组件中无法通过API获取StudentId问题

问题分析与解决方案

看起来问题出在JSON序列化的命名格式不匹配上,我来帮你拆解一下:

核心原因

ASP.NET Core 默认使用的 System.Text.Json 序列化器,会把后端模型的 PascalCase(大驼峰,比如StudentId、Name)属性自动转换为 camelCase(小驼峰,比如studentId、name)返回给前端。

而你的前端代码里:

  • 定义的 Student 类用的是 PascalCase:StudentId: number;
  • 模板里却用了小写的 st.name(刚好匹配序列化后的name字段,所以能正常显示),但st.StudentId和后端返回的studentId不匹配,导致读取不到值,显示undefined。

几种解决办法

办法一:修改前端代码适配后端的命名规则

把前端的Student类属性改成和后端序列化后的 camelCase 一致,同时修正日期类型的错误:

export class Student {
    studentId: number;
    name: string;
    bDate: Date; // 这里DateTimeFormat是错误的,应该用JavaScript的Date类型
}

然后把模板里的st.StudentId改成st.studentId:

<tr *ngFor="let st of students">
    <td>{{ st.studentId }}</td>
    <td>{{ st.name }}</td>
    <td>{{ st.bDate }}</td>
    <td>
        <a [routerLink]="['/students/', st.studentId]">View</a>
    </td>
</tr>

办法二:修改后端序列化规则,保持原属性名

如果你想让后端直接返回 PascalCase 的字段名,可以在项目的配置里修改 JSON 序列化选项:

  • 如果你用的是 .NET 6+(Program.cs):
builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        // 禁用自动驼峰命名,保持模型的原属性名
        options.JsonSerializerOptions.PropertyNamingPolicy = null;
    });
  • 如果你用的是 .NET 5 及以前(Startup.cs):
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers()
        .AddJsonOptions(options =>
        {
            options.JsonSerializerOptions.PropertyNamingPolicy = null;
        });
}

这样后端返回的 JSON 字段就是StudentId、Name,和你前端的Student类定义完全匹配,模板里的代码不需要改动就能正常显示。

办法三:单独指定字段的序列化名称

如果不想全局修改序列化规则,可以给后端的Student模型属性加上JsonPropertyName特性,指定返回的字段名:

using System.Text.Json.Serialization;

public class Student
{
    [JsonPropertyName("StudentId")]
    public int StudentId{get;set;}
    [JsonPropertyName("Name")]
    public string Name { get; set; }
    [JsonPropertyName("bDate")]
    public DateTime bDate {get;set;}
}

这种方式可以灵活控制每个字段的返回名称,同样能解决属性不匹配的问题。

另外补充一点:你前端Student类里的bDate:DateTimeFormat是错误的,JavaScript 里没有DateTimeFormat这个类型,应该改成Date才能正确解析后端返回的日期数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:22:08