2

我有 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();

然后我的财产钥匙是驼色的。有谁可以解释我为什么?

4

0 回答 0