为啥我的 KendoGrid 不调用我的 MVC 控制器?
Posted
技术标签:
【中文标题】为啥我的 KendoGrid 不调用我的 MVC 控制器?【英文标题】:Why doesn't my KendoGrid call my MVC controller?为什么我的 KendoGrid 不调用我的 MVC 控制器? 【发布时间】:2014-04-28 02:59:56 【问题描述】:我在标准 C# ASP.NET MVC 控制器中有以下代码。
public JsonResult ReadTeachers()
return Json(ReadTeacherData(), JsonRequestBehavior.AllowGet);
public void UpdateTeachers(IEnumerable<Teacher> updatedTeachers)
// this is never called
我正在尝试使用 KendoGrid 调用此控制器。这是我的网格的代码。
$("#teachers").kendoGrid(
dataSource:
type: "json",
transport:
read:
url: '@Url.Action("ReadTeachers", "EducationPortal")',
dataType: "json"
,
update:
url: '@Url.Action("UpdateTeachers", "EducationPortal")',
dataType: "json"
,
parameterMap: function (options, operation)
if (operation !== "read" && options.models)
return models: kendo.stringify(options.models) ;
,
batch: true,
schema:
model:
id: "TeacherId",
fields:
TeacherId: type: "number" ,
FullName: type: "string" ,
IsHeadmaster: type: "boolean"
,
toolbar: ["create", "save"],
columns: [
field: "FullName", title: "Teacher" ,
field: "IsHeadmaster", title: "Is a Headmaster?", width: "120px" ,
command: ["destroy"], title: " ", width: "85px" ],
editable: true
);
我从 Kendo 的examples 改编了这段代码。问题是,UpdateTeachers 方法永远不会被调用。我怀疑问题出在 parameterMap 函数上,因为那是我最了解的代码部分。
【问题讨论】:
如果您在浏览器开发工具中签入,当您编辑记录并单击“保存”按钮时是否会发送任何网络请求?想知道是客户端根本没有发送请求,还是URL不正确... 【参考方案1】:而不是使用
public void UpdateTeachers(IEnumerable<Teacher> updatedTeachers)
// this is never called
二手
public JsonResult UpdateTeachers(string models)
//Deserialize to object
IList<Teacher> teachers= new javascriptSerializer().Deserialize<IList<Teacher>>(models);
return Json(Teacher)
请注意,parameterMap: function() 以序列化字符串格式发送更新的数据,名称为 models,因此您应该在操作中使用“models”作为参数名称
希望对你有帮助
【讨论】:
【参考方案2】:我有同样的问题。我一直在重新检查我的网格,以为我在那里犯了一个错误。原来我的问题出在我传入网格的对象上:传入时我的对象的Id没有设置。
我签入了 Fiddler,POST 仍在进行中,但没有对象的 ID,我的控制器无法识别参数,因此没有执行我的操作。
确保您的读取操作返回的对象已设置其属性。
【讨论】:
以上是关于为啥我的 KendoGrid 不调用我的 MVC 控制器?的主要内容,如果未能解决你的问题,请参考以下文章