1

ASP.NET MVC、Entity Framework、および OData で Kendo UI Grid を使用しています。また、グリッド内にレコード ID があります。これまでのところ非常に良好です。

しかし、ツールバーの [新しいレコードを追加] をクリックすると、データの編集中に ID 列に 0 が表示されます。

そして、「更新」ボタンをクリックした後、正しい ID (サービスによって返されたもの) に変更されません。

{  
    "odata.metadata":"http://localhost:61534/api/$metadata#AssetList/@Element",
    "ID":17,
    "ManufacturerName":"TEST",
    "Name":"TEST",
    "SerialNumber":"TEST",
    "AssetStateID":1,
    "AssetStateName":"TEST",
    "NextCalibration":"2013-07-11T09:08:28.298Z"
}

ページ/ブラウザを更新すると、正しい ID が表示されます。

これが私の投稿方法です:

public override HttpResponseMessage Post(AssetListViewModel item)
{
    // #### MG: CREATE ASSET
    RSAMS.WebUI.Models.Asset asset = new Asset();
    asset.Manufacturer = item.ManufacturerName;
    asset.Name = item.Name;
    asset.SerialNumber = item.SerialNumber;
    asset.AssetStateID = 1; // IN USE
    asset.NextCalibration = item.NextCalibration;
    db.Asset.Add(asset);
    db.SaveChanges();

    // #### MG: RESPONSE
    item.ID = asset.ID;
    item.AssetStateID = asset.AssetStateID;
    var response = Request.CreateResponse<AssetListViewModel>(HttpStatusCode.Created, item);
    response.Headers.Location = new Uri(Url.Link("OData", new { id = item.ID }));
    return response;
}

そして、これがデータソース js (その一部) です。

dataSource: {
type: "odata",
pageSize: 25,
serverSorting: true,
serverPaging: true,
transport: {
    create: {
        url: "/api/AssetList",
        dataType: "json"
    },
    read: {
        url: "/api/AssetList",
        dataType: "json"
    },
    update: {
        url: "/api/AssetList",
        dataType: "json"
    },
    destroy: {
        url: function (data) {
            return "/api/AssetList([RW-PARAM])".replace("[RW-PARAM]", data.ID);
        },
        dataType: "json"
    }
4

1 に答える 1