我正在尝试使用Kendo UI HTML Scheduler。 我能够通过我的ASP.NET MVC应用程序成功地从数据库中读取约会。
For Read:我从我的ASP.NET控制器发送JsonResult。
对于更新:控制器正在获取URL JSON编码的字符串,我将其反序列化并更新数据库,并且不向调用者返回任何内容。
打开要编辑的事件时,进行更改并按“保存”。调用控制器并更新记录,但弹出窗口既不关闭也不调度程序更新。
Telerik网站上的HTML演示在更新时返回“callback()”并且工作正常但我在代码上缺少哪些会使更改反映出来。
**view**
<script>
$("#scheduler").kendoScheduler({
// configuration //
dataSource: {
batch: true,
transport: {
read: {
url : "http://localhost/Scheduler/Appointments",
dataType: "json"
},
update: {
Type:"POST",
url: "http://localhost/Scheduler/UpdateAppointment",
dataType: "json"
},
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: JSON.stringify(options.models)};
}
}
},
schema: {
model: {
// my model
}
},
</script>
控制器 public JsonResult UpdateAppointment(String models) {
if (models != null)
{
char[] charsToTrim = { '[', ']' };
string model_Trimmed = models.Trim(charsToTrim);
// Deserialize
Appointment SerializedAppointment = new JavaScriptSerializer().Deserialize<Appointment>(model_Trimmed);
Models.Entities.Appointment AppointmentToUpdate = db.Appointment.Where(x => x.TaskID == SerializedAppointment.TaskID).Single();
AppointmentToUpdate.Title = SerializedAppointment.Title;
AppointmentToUpdate.Start = SerializedAppointment.Start;
AppointmentToUpdate.End = SerializedAppointment.End;
db.SaveChanges();
}
return new JsonResult() {Data=null, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
答案 0 :(得分:0)
Kendo需要在参数图中返回有效的JSON格式,所以你可以试试这个:
parameterMap: function(options, operation) {
if (operation !== "read" && options.models) {
return {models: JSON.stringify(options.models)};
}
return {};
}
也许this Link也可以帮助你...
(复制只是为了防止死链接)
jQuery的新版本发生了重大变化,影响了剑道Q1 2013版本2013.1.319
由于服务器返回空结果,以防在服务器端为更新和销毁请求正确执行所有内容,因此触发了dataSource的错误事件,因为空结果不是有效的JSON。
使用MVC Extensions时建议的解决方案是: 使用最新内部版本2013.1.327 将Update / Destroy操作的响应从仅序列化ModelState更改为:
return Json(ModelState.IsValid ? new object(): ModelState.ToDataSourceResult());