【问题标题】:kendogrid update not being called未调用 kendogrid 更新
【发布时间】:2015-10-01 15:32:58
【问题描述】:

我在 mvc c# kendo ui 网格中遇到了麻烦。我正在尝试从剑道更新批量更新方法调用控制器操作我遇到问题我的 mvc 视图是这样的。它在调用“读取”时工作正常,但是在更新(保存所有批处理)时它没有在控制器中命中:

   @(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();
        }

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

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        您需要将控制器方法更改为:

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

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

        【讨论】:

        • 是的,谢谢大家。在单击剑道批处理网格的 Savechanges 按钮时,它正在点击创建操作而不是更新操作。在剑道批处理网格的情况下,创建和更新操作是否不同?请让我知道。谢谢 .Create(create => create.Action("create", "Location")) // 用户保存新数据项时调用的操作方法 .Update(update => update.Action("update", "Location" )) // 当用户保存更新的数据项时调用的操作方法
        • 遇到了同样的问题,还以为我疯了。 Grid Update 和 Delete 方法正在调用 Create 方法。当我删除 Create 方法时,更新和删除时没有调用任何内容。请参阅下面的答案以获取帮助。我的 model.Id 在绑定到网格和我的实体的视图模型中不一样。浪费了几个小时。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多