Kendo Grid Command.Edit()不向控制器发射

时间:2014-02-05 14:11:21

标签: asp.net-mvc asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc

问题:单击“更新”按钮时,它不会调用控制器“操作”。但同样的工作完全适合Create / Read / Destroy。我失踪的任何东西????请告诉我。

查看代码:

@(Html.Kendo().Grid<Model>()
       .Name("XGrid")
       .HtmlAttributes(new { style = "height: 525px;" })
       .Columns(columns =>
       {
           //Columns...

       })
       .Editable(editable => editable.Mode(GridEditMode.InLine))
       .ToolBar(toolbar =>
       {               
               toolbar.Create();               
       })
       .Pageable()
       .Sortable()
       .Scrollable()
       .Filterable()
       .Events(events =>
       {
           events.Edit("onEdit");
           events.Save("onSave");
       })
       .Selectable(selectable => selectable.Type(GridSelectionType.Row))
       .DataSource(dataSource => dataSource
           .Ajax()
           .PageSize(12)
           .ServerOperation(true)
           .Model(model =>
           {
               model.Id(ex => ex.User_ID);                   
           })
           .Update(update => update.Action("UpdateUser", "ViewUser"))
           .Read(read => read.Action("UsersRetreive", "ViewUser"))
           .Create(create => create.Action("CreateUser", "ViewUser"))
       )
    )

控制器代码:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request,Login objUpdate)
    {            
            if (ModelState.IsValid)
            {
                //Saving Code                                      
            }
            else
                return Json(objUpdate);
        }            

3 个答案:

答案 0 :(得分:1)

对于 GridEditMode .Inline,您必须使用toolbar.Save()来保存数据并点击控制器

答案 1 :(得分:1)

当然,在您将任何内联单元格的一个字母更改为事件之前,它不会被击中。这意味着如果您不进行修改,它将无法执行操作。

答案 2 :(得分:0)

尝试将HttpPost属性添加到操作方法中,如下所示:

[HttpPost]
public ActionResult UpdateUser([DataSourceRequest] DataSourceRequest request,Login objUpdate)
{
}

Kendo正在发送POST,当前方法仅接受GET次请求。

另外,请确保该方法正在返回:

return Json(objUpdate.ToDataSourceResult(request, ModelState));