Hello,
Spent hours trying to get this simple update sample to work. Firefox shows that my model is being sent to my controller on an update but my controller receives a null model. I must be missing something basic. Thank you in advance. VS2012.
Firefox debug info:
Parametersapplication/x-www-form-urlencoded
models
[{"OnTimeID":123,"Description":"Altamed staging issue","Status":"closed"}]
View:
Controller:
Why does OnTimeIDs_Update() receive a null parameter?
Spent hours trying to get this simple update sample to work. Firefox shows that my model is being sent to my controller on an update but my controller receives a null model. I must be missing something basic. Thank you in advance. VS2012.
Firefox debug info:
Parametersapplication/x-www-form-urlencoded
models
[{"OnTimeID":123,"Description":"Altamed staging issue","Status":"closed"}]
View:
<!doctype html> <html> @{ ViewBag.Title = "OnTime Sample"; } <head> <title>Kendo UI Web</title> <link href="~/styles/kendo.common.min.css" rel="stylesheet" /> <link href="~/styles/kendo.default.min.css" rel="stylesheet" /> <script src="~/js/jquery.min.js"></script> <script src="~/js/kendo.web.min.js"></script> </head> <body> <div class="form"> <div class="selector"> Edit Product: <input type="text" id="onTimeIDs" /> </div> <div id="container" class="container"> <ul> <li> <label> OnTime ID</label> <span data-bind="text:OnTimeID"></span></li> <li> <label> Description</label> <input type="text" class="k-textbox" data-bind="value: Description" /></li> <li> <label> Status</label> <input type="text" class="k-textbox" data-bind="value: Status" /></li> </ul> <button id="save"> Save</button> </div> </div> <script> var crudServiceBaseUrl = "/Services", dataSource = new kendo.data.DataSource({ transport: { read: { url: crudServiceBaseUrl + "/OnTimeIDs_Get", dataType: "json" }, update: { url: crudServiceBaseUrl + "/OnTimeIDs_Update", type: "POST", dataType: "json" }, parameterMap: function (options, operation) { if (operation !== "read" && options.models) { return { models: kendo.stringify(options.models) }; } } }, batch: true, schema: { model: { id: "OnTimeID", fields: { OnTimeID: { editable: false, nullable: true }, Description: { type: "string" }, Status: { type: "string" } } } } } ); $("#onTimeIDs").kendoDropDownList({ dataSource: dataSource, dataTextField: "Description", dataValueField: "OnTimeID", change: function () { var model = dataSource.get(this.value()); kendo.bind($("#container"), model); } }).data("kendoDropDownList") .one("dataBound", function () { kendo.bind($("#container"), dataSource.view()[0]); }); $("button").click(function () { dataSource.sync(); }); </script> </body> </html> Controller:
Why does OnTimeIDs_Update() receive a null parameter?
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MVCTimeCard.Models; namespace MVCTimeCard.Controllers { public class ServicesController : Controller { public ActionResult OnTimeIDs_Get() { List<OnTimeItem> otiList = new List<OnTimeItem>() { new OnTimeItem {OnTimeID = 123, Description = "Altamed staging issue", Status = "Open"}, new OnTimeItem {OnTimeID = 456, Description = "HILL staging issue", Status = "Open"}, new OnTimeItem {OnTimeID = 789, Description = "PPMSI staging issue", Status = "Open"} }; return Json(otiList, JsonRequestBehavior.AllowGet); } [HttpPost] public ActionResult OnTimeIDs_Update( IEnumerable< OnTimeItem> otis) { return Json(otis, JsonRequestBehavior.AllowGet); } } }