模型绑定失败,剑道网(Model Binding fails with Kendo Grid)

2019-10-23 05:47发布

我不能使用编辑和创建剑道电网的命令,因为总是绑定失败和控制器总是收到一个null的对象,即使DataSourceRequest是罚款。

我用@html.EditorForModel()和它的工作细和控制器接收的数据。 因此MVC模型绑定和我的课都没有问题。

此外,使用F12,我可以看到数据公布和这也没关系。

对可能出现的问题和调试任何想法? 有一个与我所有的剑道电网的问题,有时他们张贴的模型两次,我获得双倍Create的服务器,它们中的哪一个总是失败,因为重复键上。 或有时创建将由编辑命令也被触发。

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

有了这个特殊类,服务器始终接收两个创建并没有一个正确的结合。 第一个创建,发布所有字段,第二个职位的所有导航属性字段太的!

这是操作方法:

[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")
        )
)

UPDATE

看来,剑道电网不支持复合主键呢!

Answer 1:

这个问题让我出去! 我只需要重命名的参数,如:

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

因为我的类包含使用该名称,股票的一些领域!



文章来源: Model Binding fails with Kendo Grid