【问题标题】:Model Binding fails with Kendo GridKendo Grid 的模型绑定失败
【发布时间】:2015-05-27 03:20:38
【问题描述】:

我不能使用 Kendo Grid 的编辑和创建命令,因为绑定总是失败并且控制器总是接收到 null 对象,即使 DataSourceRequest 很好。

我使用了@html.EditorForModel(),它运行良好,控制器收到了数据。所以 MVC 模型绑定和我的类不是问题。

另外,使用 F12,我可以看到正在发布的数据,这也很好。

对可能的问题和调试有任何想法吗?我所有的剑道网格都存在问题,有时他们两次发布模型,我在服务器上收到双份Create,其中一个总是因为重复的键而失败。或者有时create也会被edit命令触发。

我不知道哪里出错了,在大多数情况下用户也会选择主键,所以我返回的模型不需要更新。

使用这个特定的类,服务器总是会收到两个创建并且它们都没有正确绑定。第一个创建,发布所有字段,第二个发布所有导航属性的字段!

这是动作方法:

[HttpPost]
public ActionResult Create([DataSourceRequest] DataSourceRequest request, Stock stock){
        if (stock != null && ModelState.IsValid)
        {
            repo.Insert(stock);
            return Json(new[] { stock }.ToDataSourceResult(request, ModelState));
        }
        else
            return Json(null);
}

还有网格:

@(Html.Kendo().Grid<Stock>()
    .Name("stock")
        .Columns(columns =>
        {
            columns.ForeignKey(x => x.CGoodCode, (IEnumerable)ViewData["Goods"], "Id", "Text");
            ///
            columns.Command(command => { command.Edit(); command.Destroy(); });
        })
        .ToolBar(toolbar => {
            toolbar.Create();
            toolbar.Excel();
            toolbar.Pdf();
        })
        .Editable(edit => edit.Mode(GridEditMode.PopUp))
        .Sortable()
        .Pageable(p => p.PageSizes(true))
        .DataSource(ds => 
            ds.Ajax()
            .Model(model => {
                model.Id(x => x.CGoodCode);
                model.Id(x => x.SWhCode);
                model.Id(x => x.LiIdPeriod);
                model.Field(x => x.CGoodCode).DefaultValue(ViewData["GoodsDefault"]);
                ////

            })
            .Read("Read", "Stock")
            .Update("Edit", "Stock")
            .Create("Create", "Stock")
            .Destroy("Delete", "Stock")
        )
)

更新

Kendo Grid 似乎还不支持composite primary keys

【问题讨论】:

  • 请提供完整的操作代码。

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


【解决方案1】:

This question帮了我一把!我只需要将参数重命名为:

public ActionResult Create([DataSourceRequest] DataSourceRequest request, Stock somethingElse){

因为我的类包含一些具有该名称的字段,Stock!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多