在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];
- .
- .
- .
- }