#javascript #.net #kendo-grid
#javascript #.net #kendo-grid
Вопрос:
Я отправляю json из kendo grid при удалении строки, но в контроллере я получаю null.
$(document).ready(function () {
$("#grid").kendoGrid({
dataSource: {
type: "json",
transport: {
read: {
type: "POST",
dataType: "json",
url: "/Home/GetPatients"
},
destroy: {
url: '@Url.Action("deletePatient", "Home")',
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json"
},
parameterMap: function (options, operation) {
if (operation !== "read" amp;amp; options)
return kendo.stringify(options);
}
},
schema: {
model: {
id: "Id",
fields: {
FirstName: { type: "string" },
LastName: { type: "string" },
CNP: { type: "string" },
Birthdate: { type: "date" }
}
}
},
pageSize: 20,
},
height: 300,
sortable: true,
pageable: {
refresh: true,
pageSizes: true,
buttonCount: 5
},
toolbar: ["create"],
columns:
[
{ field: "LastName", title: "Nume" },
{ field: "FirstName", title: "Prenume" },
{ field: "CNP", title: "CNP" },
{ field: "Birthdate", title: "Data nasterii", format: "{0:dd/MM/yyyy}" },
{
command:
[
{
name: "edit"
},
{
name: "destroy",
}
],
title: "", width: "172px"
}
],
editable: "popup"
});
});
Я помещаю debug здесь в метод, и фактический параметр ‘j’ равен нулю, это должна быть строка (сериализовать json).
В Chrome -> режим отладки -> сеть -> Я получил статус 200 ok, и в полезной нагрузке запроса я просматриваю json со всеми данными строки, что на самом деле нормально, но я застрял.
[HttpPost]
public ActionResult deletePatient(string j)
{
//List<Patient> objName = new JavaScriptSerializer().Deserialize<List<Patient>>(j);
int a = 5;
a = a - 4;
return Json(a);
}
Ответ №1:
Вы отправляете строку и притворяетесь, что это JSON (см. Ваши contentType
и data
). Это может сработать, если вы измените его на что-то вроде text/plain
.
Но вы даже не должны пытаться это! Вы должны создать PatientModel
на C #, Который имеет свойства FirstName
, LastName
и так далее, и ожидать эту самую модель в вашем методе контроллера. Таким образом, вам не нужно сериализовать и десериализовать данные самостоятельно. Учитывая, что у вас уже есть действие GetPatients
, я бы предположил, что у вас уже есть эта модель. Используйте его.
Комментарии:
1. Это одностраничное приложение, я не использую модели в html, передача данных между сервером и клиентом должна быть json, более эффективна, чем mvc .net с точки зрения времени загрузки данных, у меня много данных. Я использую entity Framework на сервере.
2. Я исправляю это, по-видимому, оно десериализуется автоматически, я изменил
string
наpatient
,patient
это класс, модель.