没有调用kendogrid更新

时间:2015-10-01 15:32:58

标签: c# asp.net-mvc kendo-ui kendo-grid

我在mvc c#kendo ui grid中遇到麻烦。我试图从kendo更新批量更新方法调用控制器操作我遇到问题我的mvc视图是这样的。它可以正常工作' read'但在更新(保存所有批次)时,它没有在控制器中命中:

   @(Html.Kendo().Grid(Model.oldList)
          .Name("grid")
          .Columns(columns =>
          {
              columns.Bound(m => m.IsNewString).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Data").Encoded(false).Width(80); ;
              columns.Bound(m => m.Id).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Code").Encoded(false).Width(80);
              columns.Bound(m => m.Name).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Business Name").Encoded(false).Width(80);
              columns.Bound(m => m.Address.Address1).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Address1").Encoded(false).Width(80);
              columns.Bound(m => m.Address.Address2).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Address2").Encoded(false).Width(80);
              columns.Bound(m => m.Address.Country).HeaderHtmlAttributes(new { style = "text-align:center;" }).Title("Country").Encoded(false).Width(80);
              columns.Command(commands =>
              {
                  commands.Destroy(); 
              }).Title("Commands").Width(200);
          })
          .ToolBar(toolbar =>
          {
              //toolbar.Create(); 
              toolbar.Save(); 
          })
          .Editable(editable => editable.Mode(GridEditMode.InCell)) 
          .DataSource(dataSource =>
              dataSource.Ajax()
                .Batch(true) // Enable batch updates
                .Model(model =>
                {
                    model.Id(m => m.Id); 
                    model.Field(m => m.Id).Editable(false); 
                })
                //.Create(create => create.Action("Products_Create", "Home"))
                .Read(read => read.Action("LoadCompareList", "Home", new { clientId = clientid, templateId = templateid })) 
                                .Update(update => update.Action("test", "Home"))  

          )
          .Pageable()
                    )

我的控制器动作是这样的:

     [HttpPost]
        public ActionResult test([DataSourceRequest]DataSourceRequest request,IEnumerable<DetailsDTO> products)
        {
            return View();
        }

但是这个动作没有解雇。我不知道发生了什么。

3 个答案:

答案 0 :(得分:1)

更改

.Update(update => update.Action("test", "Home"))  

.Update(update => update.Action("test", "Home").Type(HttpVerbs.Post))  

在我的应用程序中完成了这个技巧。我也在使用属性

[AcceptVerbs(HttpVerbs.Post)]

在我的控制器中。

增加:

另一个原因可能是模型。我不得不改变我的方法:

public async Task<ActionResult> UpdatePackageList([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<MyClass> products)

答案 1 :(得分:1)

我有同样的问题,经过一整夜的努力,我意识到剑道要求模型.Id值存在且独特。在我的情况下这不是真的,因为我是从代码(而不是从db)手动填充网格,所以我使用另一个保证具有唯一值作为Id的属性,并且它起作用。

Model(model =>
      {
        model.Id(x => x.MetreId);
}

答案 2 :(得分:0)

您需要将Controller方法更改为:

[HttpPost]
public ActionResult test([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")] IEnumerable<DetailsDTO> products)
{
        return View();
}

还要确保您引用了脚本kendo.aspnetmvc.min.js