Я использую Kendo UI Grid с ASP.NET MVC, Entity Framework и OData. У меня также есть идентификатор записи внутри сетки - пока все хорошо.
Но когда я нажимаю «Добавить новую запись» на панели инструментов, в столбце идентификатора отображается 0, пока я редактирую данные.
И после того, как я нажму кнопку «Обновить», он не изменится на правильный идентификатор (который был возвращен службой):
{
"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"
}
Когда я обновляю страницу/браузер, отображается правильный идентификатор.
Вот мой метод публикации:
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"
}