2

私は(ほぼ)同じ2つのプロジェクトを持っています。1番目のコードから2番目のコードにコードをコピーして貼り付けます。すべてASP.NETMVCソリューションです。これらのプロジェクトでは、次のようなデータを取得します。

$.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"...

ご覧のとおり、私のキーは大文字です:フォルダ、メール、フォルダ、受信トレイ、...

これは、2番目のプロジェクトで返された同じ種類のjsonです。

{"category":"Car","vehicles":[{"vehicleId":1,"category":"Car","model":"C220","brand":"Mercedes","registration":"AZE-123"}]}

すべてのキーは小文字で返されます:カテゴリ、車両、モデル、ブランド、...

なぜですか?

UPDATE_ _ __ _ ___

要求に応じて、次のWebAPIアクションが呼び出されます。

    // 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;
    }

そしてここに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