10 рдорд┐рдирдЯ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХрд░реЗрдВ

рд╣реИрд▓реЛ, рдкреНрд░рд┐рдп Habrasociety!

рдореИрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯреЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдпреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рддреИрдпрд╛рд░ рд╕реАрдПрдордПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЦреБрдж рдИрдВрдЯреЛрдВ рдХреЛ рдвреЗрд░ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдмреЗрд╢рдХ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднрд╛рдЧ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЖрдзреА рдкрд░реЗрд╢рд╛рдиреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред рдореБрдЭреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдЯрди рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рд╛ред рд▓реЗрдХрд┐рди рдПрдХ рджрд┐рди, рдореИрдВ рдЕрджреНрднреБрдд рдЯреЗрд▓рд░рд┐рдХ рдХреЗрдВрдбреЛрдпреВ рдпреВрдЖрдИ рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛ред рдХрдЯ рдХреЗ рддрд╣рдд рдпрд╣ рдХреНрдпрд╛ рдЖрдпрд╛ред


рд╣реЗрдмрд░реЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╣реА рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо KendoUI рд╡реЗрдм рд╡реЗрдм рдХрдВрдЯреНрд░реЛрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдбреЗрдореЛ рдкреЗрдЬ рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк ASP.NET, JSP рдпрд╛ PHP, рд╕рд╛рде рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рджреЛрдиреЛрдВ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЬреАрдкреАрдПрд▓ v3 рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдЗрд╕ рдпрд╛ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ред рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл, рдореИрдВ ASP.NET MVC 4 рдХрд╛ рдЙрдкрдпреЛрдЧ Microsoft ASP.NET рд╡реЗрдм рдПрдкреАрдЖрдИ OData 4.0.0 рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ PM> рдЗрдВрд╕реНрдЯрд╛рд▓-рдкреИрдХреЗрдЬ рдХрдорд╛рдВрдб Microsoft.AspNet.WebApi.OData рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдЪреНрдЫреЗрдж рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ рдФрд░ рдЙрд╕рдореЗрдВ рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдг рдЬреЛрдбрд╝реЗрдВред
public class Article { public int ID { get; set; } public string Title { get; set; } public bool Hidden { get; set; } } 


рдЕрдЧрд▓рд╛, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ ApiController рдмрдирд╛рдПрдВред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдЗрдХрд╛рдИ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рддреБрд░рдВрдд рдордЪрд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ



рдЙрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ рдХреЗрд╡рд▓ рдЧреЗрдЯрдЕрд░реНрдЯрд┐рдХрд▓реНрд╕ рдПрдХреНрд╢рди рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдм рдпрд╣ ODataResult рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ ODataQueryOptions рд▓реЗрддрд╛ рд╣реИ, рдпрд╣ рдХреНрд░рдордмрджреНрдз рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рд╣реА, рд╣рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдЙрд╕рдореЗрдВ рдХреБрд▓ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдорд┐рд▓рддреА рд╣реИред рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд╣рдо рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЙрд╕ рдкрд░ рдФрд░ рдХреБрд▓ рдорд╛рддреНрд░рд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдкреГрд╖реНрдард╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред

  public class ArticlesController : ApiController { private Storage db = new Storage(); // GET api/Articles public ODataResult<Article> GetArticles(ODataQueryOptions options) { var items = db.Articles; var count = items.Count(); var res = (IEnumerable<Article>)options.ApplyTo(items); return new ODataResult<Article>(res, null, count); } // GET api/Articles/5 public Article GetArticle(int id) { Article article = db.Articles.Find(id); if (article == null) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound)); } return article; } // PUT api/Articles/5 public HttpResponseMessage PutArticle(int id, Article article) { if (ModelState.IsValid && id == article.ID) { db.Entry(article).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return Request.CreateResponse(HttpStatusCode.NotFound); } return Request.CreateResponse(HttpStatusCode.OK); } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } } // POST api/Articles public HttpResponseMessage PostArticle(Article article) { if (ModelState.IsValid) { db.Articles.Add(article); db.SaveChanges(); HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, article); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = article.ID })); return response; } else { return Request.CreateResponse(HttpStatusCode.BadRequest); } } // DELETE api/Articles/5 public HttpResponseMessage DeleteArticle(int id) { Article article = db.Articles.Find(id); if (article == null) { return Request.CreateResponse(HttpStatusCode.NotFound); } db.Articles.Remove(article); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { return Request.CreateResponse(HttpStatusCode.NotFound); } return Request.CreateResponse(HttpStatusCode.OK, article); } } 


рд╡рд╣ рд╕рдм рд╣реИред рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, KendoUI рдФрд░ jQuery рдХреЛ рдкреГрд╖реНрда рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред
  <link href="~/Content/kendo/kendo.common.min.css" rel="stylesheet" /> <link href="~/Content/kendo/kendo.default.min.css" rel="stylesheet" /> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script> <script src="~/Scripts/kendo/kendo.web.min.js"></script> 


рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд┐рдЬреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред рд╡рд┐рдЬреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╣рд╛рдБ рдкрдврд╝реЗрдВред

 <div id="grid"></div> <script> $(document).ready(function () { $("#grid").kendoGrid({ dataSource: { pageSize: 3, serverSorting: true, serverFiltering: true, serverPaging: true, type: 'odata', transport: { read: { url: "/api/articles", dataType: "json", type: "GET" }, create: { url: "/api/articles", dataType: "json", type: "POST" }, update: { url: function (article) { return "/api/articles/" + article.ID }, dataType: "json", type: "PUT" }, destroy: { url: function (article) { return "/api/articles/" + article.ID }, dataType: "json", type: "DELETE" } }, schema: { data: function (data) { return data.Items; }, total: function (data) { return data.Count; }, model: { id: "ID", fields: { ID: { editable: false }, Title: { type: "string", editable: true, nullable: false, validation: { required: true } }, Hidden: { type: "boolean", editable: true } } } } }, height: 250, filterable: true, sortable: true, pageable: true, toolbar: ["create"], editable: "popup", columns: [ { field: "ID", filterable: false, width: 50 }, { field: "Title", title: "", width: 300 }, { field: "Hidden", title: "", width: 100 }, { command: ["edit", "destroy"], title: " ", width: "210px" } ] }); }); </script> 


рд╣реЛ рдЧрдпрд╛! рдЕрдм рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 10 рдорд┐рдирдЯ рд╕реЗ рднреА рдХрдо рд╕рдордп рдореЗрдВ, рд╣рдордиреЗ рдбреЗрдЯрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдкреЗрдЬрд┐рдВрдЧ, рд╕реЙрд░реНрдЯ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЖрд░рд╛рдорджрд╛рдпрдХ рдФрд░ рд╕реБрдЦрджред KendoUI рдФрд░ OData рдкреНрд░рд╛рд░реВрдк рдФрд░ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред






рд░реБрдкрдпреЗ рд╡реИрд╕реЗ, рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЬреЗрдПрд╕ / рд╕рдВрд╕реНрдХреГрддрд┐рдпреЛрдВ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рд╣реИред

Source: https://habr.com/ru/post/In175457/


All Articles