项目概述
我正在一个基于以下项目:
1-角6
2- Aspnet Core 2.1
场景
我正在使用下面的角度代码调用获取请求
let reqHeader = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.get(this._URL).subscribe(
(data => {
this._engineersList = data[0];
this._shiftList = data[1];
console.log(data[0])
}), error => this.error
);
class Engineers {
public ID: number;
public Name: string;
}
class Shifts {
public ID: number;
public EmployeeID: number;
public EmployeeName: string;
public ShiftName: string;
public ShiftTime: string;
}
因为我的属性名称均为驼峰式。显然,我将其绑定到我的HTML中,如下所示:
<tbody>
<tr *ngFor="let engineer of _engineersList">
<td>
{{engineer.Id}}
</td>
<td>
{{engineer.Name}}
</td>
</tr>
</tbody>
我将获得以下输出(无数据绑定):
但是当我将我的Camel大小写属性转换为小写时,例如:
<tbody>
<tr *ngFor="let engineer of _engineersList">
<td>
{{engineer.id}}
</td>
<td>
{{engineer.name}}
</td>
</tr>
</tbody>
发现
当我在浏览器控制台中检查GET请求的返回结果时,发现我的可观察到的返回属性为小写。
此外,我在服务器端对此进行了验证,但未发现此类问题。服务器在驼峰情况下正确地向我返回了正确的数据。
我要说的是为什么我的JSON结果以小写字母显示并绑定我的属性名称?如您在这篇文章的顶部所看到的,我已经创建了一个模型类,并且它们的属性在Camel Case中,它们应该像在HTML上一样进行绑定,但是不起作用。请帮我解决我在代码中做错的事情。希望我简短地解释我的问题。
答案 0 :(得分:0)
您是否尝试过使用中间件属性? 您可能要在这里强迫骆驼或Pascal皮套?
protected void Application_Start()
{
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
}
答案 1 :(得分:0)
在ASP.NET Core中,您可以将其添加到Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
}