مثال فوق را (KendoUI06) اگر برای ASP.NET MVC بازنویسی کنیم به کدهای ذیل خواهیم رسید:
در این حالت View برنامه فقط جهت ذکر آدرسهای جدید باید اصلاح شود و نیاز به تغییر دیگری ندارد:
using System.Linq; using System.Net; using System.Net.Http; using System.Web.Mvc; using Kendo.DynamicLinq; using KendoUI06Mvc.Models; using Newtonsoft.Json; namespace KendoUI06Mvc.Controllers { public class HomeController : Controller { public ActionResult Index() { return View(); // shows the page. } [HttpDelete] public ActionResult DeleteProduct(int id) { var item = ProductDataSource.LatestProducts.FirstOrDefault(x => x.Id == id); if (item == null) return new HttpNotFoundResult(); ProductDataSource.LatestProducts.Remove(item); return Json(item); } [HttpGet] public ActionResult GetProducts() { var request = JsonConvert.DeserializeObject<DataSourceRequest>( this.Request.Url.ParseQueryString().GetKey(0) ); var list = ProductDataSource.LatestProducts; return Json(list.AsQueryable() .ToDataSourceResult(request.Take, request.Skip, request.Sort, request.Filter), JsonRequestBehavior.AllowGet); } [HttpPost] public ActionResult PostProduct(Product product) { if (!ModelState.IsValid) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); var id = 1; var lastItem = ProductDataSource.LatestProducts.LastOrDefault(); if (lastItem != null) { id = lastItem.Id + 1; } product.Id = id; ProductDataSource.LatestProducts.Add(product); // گرید آی دی جدید را به این صورت دریافت میکند return Json(new DataSourceResult { Data = new[] { product } }); } [HttpPut] // Add it to fix this error: The requested resource does not support http method 'PUT' public ActionResult UpdateProduct(int id, Product product) { var item = ProductDataSource.LatestProducts .Select( (prod, index) => new { Item = prod, Index = index }) .FirstOrDefault(x => x.Item.Id == id); if (item == null) return new HttpNotFoundResult(); if (!ModelState.IsValid || id != product.Id) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); ProductDataSource.LatestProducts[item.Index] = product; //Return HttpStatusCode.OK return new HttpStatusCodeResult(HttpStatusCode.OK); } } }
var productsDataSource = new kendo.data.DataSource({ transport: { read: { url: "@Url.Action("GetProducts","Home")", dataType: "json", contentType: 'application/json; charset=utf-8', type: 'GET' }, create: { url: "@Url.Action("PostProduct","Home")", contentType: 'application/json; charset=utf-8', type: "POST" }, update: { url: function (product) { return "@Url.Action("UpdateProduct","Home")/" + product.Id; }, contentType: 'application/json; charset=utf-8', type: "PUT" }, destroy: { url: function (product) { return "@Url.Action("DeleteProduct","Home")/" + product.Id; }, contentType: 'application/json; charset=utf-8', type: "DELETE" }, parameterMap: function (options) { return kendo.stringify(options); } },