我有 2 个项目(几乎)相同。我将代码从第一个复制/粘贴到第二个。都是 ASP.NET MVC 解决方案。在这些项目中,我检索如下数据:
$.get("/api/mail", { folder: this.params.folder }, self.chosenFolderData);
或者
$.get("/api/vehicle", { category: this.params.category }, self.chosenCategoryData);
当我检查从第一个返回的 json 数据时,我得到了这个:
{"Folder":"Inbox","Mails":[{"MailId":4,"Folder":"Inbox","From":"XLN <basia@framehome.xyz>","To":"steve@example.com","Subject"...
如您所见,我的键是大写的:文件夹,邮件,文件夹,收件箱,...
这是为第二个项目返回的相同类型的 json:
{"category":"Car","vehicles":[{"vehicleId":1,"category":"Car","model":"C220","brand":"Mercedes","registration":"AZE-123"}]}
我所有的键都返回小写:类别,车辆,型号,品牌,...
知道为什么吗?
更新_ _ __ _ ___
根据要求,以下是称为 Web API 的操作:
// GET api/Vehicle
public GetVehiclesViewModel GetVehicles(string category)
{
GetVehiclesViewModel viewModel = new GetVehiclesViewModel
{
Category = category,
Vehicles = db.Vehicles.Where(x => x.Category == category).OrderByDescending(u => u.Model).AsEnumerable()
};
return viewModel;
}
这是视图模型:
public class GetVehiclesViewModel
{
public string Category { get; set; }
public IEnumerable<VehicleModel> Vehicles { get; set; }
}
在我的 WebAPI 路由中,我也有这个:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Use camel case for JSON data.
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
好的,现在我终于发现,如果我删除它:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
然后我的财产钥匙是驼色的。有谁可以解释我为什么?