CostCenterController:
public ActionResult CostCenters_Read([DataSourceRequest] DataSourceRequest request) { return Json(ccService.Read().ToDataSourceResult(request)); } [AcceptVerbs(HttpVerbs.Post)]
public ActionResult CostCenters_Create([DataSourceRequest] DataSourceRequest request, CostCenterViewModel cc) { if (cc != null && ModelState.IsValid) { ccService.Create(cc); } //return Json(cc, JsonRequestBehavior.AllowGet); return Json(new[] { cc }.ToDataSourceResult(request, ModelState)); } [AcceptVerbs(HttpVerbs.Post)]
public ActionResult CostCenters_Update([DataSourceRequest] DataSourceRequest request, CostCenterViewModel cc) { if (cc != null && ModelState.IsValid) { ccService.Update(cc); } return Json(new[] { cc }.ToDataSourceResult(request, ModelState)); }
Index.cshtml:
@(Html.Kendo().Grid<Main.Models.Quality.CostCenterViewModel>()
.Name("CostCenter")
.Columns(columns =>
{columns.Bound(c => c.CostCenterID);
columns.Bound(c => c.CC).Width(140);
columns.Bound(c => c.Rate).Width(140);
columns.Bound(c => c.Date).Width(100);
columns.Command(command => command.Destroy()).Width(110);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(c => c.CostCenterID)) .Create(update => update.Action("CostCenters_Create", "CostCenter")) .Read(read => read.Action("CostCenters_Read", "CostCenter")) .Update(update => update.Action("CostCenters_Update", "CostCenter")) .Destroy(update => update.Action("CostCenters_Destroy", "CostCenter"))
))
<script type="text/javascript">
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function () {
message += this + "\n";
});
}
});
alert(message); }
}
</script>
I set CostCenterServer, the code is similar as ProductService.
It show up as normal, but when I Click "New Record", It popped up error with "This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet."
In Controller, i tried to replace return Json(cc, JsonRequestBehavior.AllowGet); with return Json(new[] { cc }.ToDataSourceResult(request, ModelState)); but no lucky??