I am using Telerik UI Scheduler for asp.net core Project.I am using WebApi to bind data and insert new meeting to the room but I have 2 problems are:
1. insert is called twice when I insert new Item.
2. update and delete methods are bound to Post and they are not calling corresponded do delete of add operation.
1. insert is called twice when I insert new Item.
2. update and delete methods are bound to Post and they are not calling corresponded do delete of add operation.
html view @(Html.Kendo().Scheduler<Meeting>().Name("scheduler").Date(new DateTime(2017, 5, 13)) .StartTime(new DateTime(2017, 5,13, 7, 00, 00)) .Editable(true) .Views(views=>{ views.DayView(); views.AgendaView(); }) .Height(600) .Timezone("Etc/UTC") .Group(group => { group.Resources("Rooms"); group.Date(true); }) .Resources(resource => { resource.Add(m => m.RoomId).Title("Room").Name("Rooms").DataTextField("Text").DataValueField("Value").DataColorField("Color").BindTo(new[] { new { Text = "Meeting Room 101", Value = 1, Color = "#6eb3fa" }, new { Text = "Meeting Room 201", Value = 2, Color = "#f58a8a" } }); resource.Add(m => m.Attendees) .Title("Attendees") .Multiple(true) .DataTextField("Text") .DataValueField("Value") .DataColorField("Color") .BindTo(new[] { new { Text = "Alex", Value = 1, Color = "#f8a398" } , new { Text = "Bob", Value = 2, Color = "#51a0ed" } , new { Text = "Charlie", Value = 3, Color = "#56ca85" } }); }).DataSource(d => d .WebApi() .Model(m => { m.Id(f => f.RecordId); m.Field(f => f.Title).DefaultValue("No title"); m.Field(f => f.Title).DefaultValue("No title"); }) .Events(events => events.Error("error_handler")) .Read(read => read.Action("Get", "Meeting")) .Create(create => create.Action("Post", "Meeting")) .Update(update => update.Action("Put", "Meeting", new { id = "{0}" })) .Destroy(destroy => destroy.Action("Delete", "Meeting", new { id = "{0}" })) ).Deferred()) @* All initialization scripts are rendered to the bottom of the page, see _Layout.cshtml *@ @section scripts { @Html.Kendo().DeferredScripts() } <script> function error_handler(e) { var errors = $.parseJSON(e.xhr.responseText); if (errors) { alert("Errors:\n" + errors.join("\n")); } } </script>meeting Web api controller [Route("api/[controller]")] public class MeetingController : Controller { private IMeetingData meetingData; public MeetingController(IMeetingData meetingData) { this.meetingData = meetingData; } // GET api/task [HttpGet] public DataSourceResult Get([DataSourceRequest]DataSourceRequest request) { return meetingData.GetAll().ToDataSourceResult(request); } // POST api/Meeting [HttpPost] public IActionResult Post(Meeting m) { if (!ModelState.IsValid) { return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage)); } meetingData.Insert(m, null); return new ObjectResult(new DataSourceResult { Data = new[] { m }, Total = 1 }); } // PUT api/Meeting/5 [HttpPut("{id}")] public IActionResult Put(int id, Meeting m) { if (ModelState.IsValid && id == m.RecordId) { try { meetingData.Update(m, null); } catch (Exception) { return new NotFoundResult(); } return new StatusCodeResult(200); } else { return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage)); } } // DELETE api/Meeting/5 [HttpDelete("{id}")] public IActionResult Delete(int id) { try { meetingData.Delete(new Meeting { RecordId = id }, null); } catch (Exception) { return new NotFoundResult(); } return new StatusCodeResult(200); } } }