2016-11-30 59 views
0

kendo调度程序对可能发生的事件有一些选项。Kendo调度程序从不调用更新方法MVC 5

.Model(m => 
    { 
     m.Id(f => f.TaskID); 
     m.Field(f => f.Title).DefaultValue("No title"); 
     m.Field(f => f.OwnerID).DefaultValue(1); 
     m.Field(f => f.Title).DefaultValue("No title"); 
     m.RecurrenceId(f => f.RecurrenceID); 
    }) 
    .Read("Read", "Agenda") 
    .Create("Create", "Agenda") 
    .Destroy("Destroy", "Agenda") 
    .Update("Update", "Agenda") 
    .Filter(filters => 
    { 
     filters.Add(model => model.OwnerID).IsEqualTo(1).Or().IsEqualTo(2); 
    }) 

Read方法还给从数据库中我的成绩很好,当我尝试插入一个新的事件来调度它要求创建方法,插入新行的表。

如果有我想要编辑的现有事件。我双击事件,更改它的信息并按保存。

enter image description here

我试图调试一些断点的代码,但更新不会被调用。相反,它会再次调用create方法。

我可以然而添加以下创建方法:

public virtual JsonResult Create([DataSourceRequest] DataSourceRequest request, EventModel task) 
    { 
     if (ModelState.IsValid) 
     { 
      if (task.ID == null) 
      { 
       // Create an event 
       AllQueries.InsertEvent(task); 
      } 
      else 
      { 
       AllQueries.UpdateEvent(task); 
      } 
     } 

     return Json(new[] { task }.ToDataSourceResult(request, ModelState)); 
    } 

未经检查的ID等于“空”,它不断增加做过这样每一个请求增加3个事件后,实际上增加了6个新事件。

此检查适用于创造新的事件,但是当我更新的事件,它会扫描所有低谷事件exisitng直到的ID相匹配,当它发现它得到改变。这在开始时是没有问题的,但是当大量事件被添加到调度器时,它就成为了一个问题。

如何让调度程序调用Update方法而不是调用create方法?

+0

但是,如果ID不为空,这意味着它的更新权?否则创建..我没有得到你的这条语句'但是当我更新事件时,它会扫描所有存在的事件,直到id匹配,并且当它被发现时它会被改变。' –

+0

如果task.ID不等于null,它意味着它有一个ID。当我调试调度器并通过步骤1时,它会遍历数据库中的所有现有事件直到它找到具有相同ID的那个事件,然后更新该特定事件。 –

+0

但即使在你的'Update'方法中也会发生什么?对? –

回答

0

该ID必须是非资本。一旦你改变主键ID为ID一切工作正常。