加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC Model Binding不适用于Kendo Grid

发布时间:2020-12-16 04:37:36 所属栏目:asp.Net 来源:网络整理
导读:在MVC项目中,我有以下视图,其中我使用了Kendo Grid %: Html.Kendo().GridMilestone() .Name("MilestonesGrid") .Columns(columns = { columns.Bound(p = p.ContractMilestoneID).Hidden(); columns.Bound(p = p.MilestoneSN).Title("Κωδικ?? οροσ?
在MVC项目中,我有以下视图,其中我使用了Kendo Grid
<%: Html.Kendo().Grid<Milestone>()
                .Name("MilestonesGrid")
                .Columns(columns =>
                {
                    columns.Bound(p => p.ContractMilestoneID).Hidden();
                    columns.Bound(p => p.MilestoneSN).Title("Κωδικ?? οροσ?μου");
                    columns.Bound(p => p.EstimatedDate).Title("Εκτιμ?μενη ημερομην?α");
                    columns.Bound(p => p.RealDate).Title("Πραγματικ? ημερομην?α");
                    columns.Bound(p => p.MilestoneDescription).Title("Περιγραφ?");
                    columns.Bound(p => p.Payment).Title("Πληρωμ?");
                    columns.Bound(p => p.PaymentRate).Title("Ποσοστ? πληρωμ??");
                    columns.Bound(p => p.IsCompleted).Title("?χει ολοκληρωθε?");
                    columns.Command(command =>
                        {
                            command.Edit()
                                   .Text("Επεξεργασ?α")
                                   .CancelText("Ακ?ρωση")
                                   .UpdateText("Αποθ?κευση");

                            command.Destroy()
                                   .Text("Διαγραφ?");
                        });
                })
                .ToolBar(toolbar => toolbar.Create().Text("Προσθ?κη ν?ου οροσ?μου"))
                .Editable(editable => editable.Mode(GridEditMode.InLine))
                .Sortable()
                .Pageable()
                .Filterable()
                .Resizable(resize => resize.Columns(true))
                .DataSource(dataSource => dataSource
                    .Ajax()
                    .ServerOperation(true)
                    .Model(model => model.Id(o => o.ContractMilestoneID))
                    .Model(model => model.Field(o => o.MilestoneSN))
                    .Model(model => model.Field(o => o.EstimatedDate))
                    .Model(model => model.Field(o => o.RealDate))
                    .Model(model => model.Field(o => o.MilestoneDescription))
                    .Model(model => model.Field(o => o.Payment))
                    .Model(model => model.Field(o => o.PaymentRate))
                    .Model(model => model.Field(o => o.IsCompleted))
                    .Batch(true)
                    .Create(create => create.Action("CreateMilestone","Milestones"))
                    .Read(read => read.Action("DetailsJson","Milestones",new { id = ViewBag.ID }))
                    .Update(update => update.Action("UpdateMilestone","Milestones"))
                    .Destroy(delete => delete.Action("DeleteMilestone","Milestones")))
%>

我还有一个控制器,我想在Kendo Grid中保存一个新条目.

[HttpPost]
    public ActionResult CreateMilestone([DataSourceRequest] DataSourceRequest request,Milestone milestone)
    {
        if (milestone != null && ModelState.IsValid)
        {
            using (TADCEntities database = new TADCEntities())
            {
                tblSymvaseisOrosima item = new tblSymvaseisOrosima
                {
                    fldEstimatedDate = milestone.EstimatedDate,fldIsCompleted = milestone.IsCompleted,fldMilestoneDescription = milestone.MilestoneDescription,fldMilestoneSN = milestone.MilestoneSN,fldPayment = milestone.Payment,fldPaymentRate = milestone.PaymentRate,fldRealDate = milestone.RealDate,fldStoixeioYpoergouID = milestone.ElementSubProjectID
                };

                database.tblSymvaseisOrosima.Add(item);
                database.SaveChanges();

                return Json(new[] { item }.ToDataSourceResult(request,ModelState));
            }
        }

        return View();
        // should also return json
    }

问题是,即使我在网格中创建新条目并按保存时输入数据,Milestone类型(控制器中的参数)也始终为null.知道怎么做才能在里程碑参数中传递输入的数据?先感谢您

解决方法

正如我在Fiddler中看到的那样,参数是使用模型前缀发布的,因此您必须像这样访问它们:
public ActionResult CreateMilestone([DataSourceRequest] DataSourceRequest request,[Bind(Prefix="models")] List<Milestone> milestons) 
{
    Milestone milestone = milestons[0];
    .
    .
    .  
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读