Kendo UI Scheduler Edit弹出窗口在进行更改后不会关闭

时间:2014-03-20 19:20:18

标签: c# asp.net asp.net-mvc json telerik

我正在尝试使用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 };

}

1 个答案:

答案 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());