Hello,
I am trying to use the Scheduler control for my application. I have it reading the data from my controller fine. However, I cannot get it call the HttpPut handler correctly.
My breakpoint isnt hit & checking the traffic the responce is:
400 - Bad Request{"":["The input was not valid."]}
The code I am using for the UI is:
01.@(Html.Kendo().Scheduler<MeetingViewModel>()02. .Name("SchedulerView")03. .Height(500)04. .Date(DateTime.Now.ToUniversalTime())05. .StartTime(new DateTime(2018, 11, 28, 0, 00, 00).ToUniversalTime())06. .MajorTick(30)07. .ShowWorkHours(false)08. .Footer(false)09. .Editable(edit =>10. {11. //edit.Resize(false);12. edit.Create(false);13. })14. .Views(views =>15. {16. views.TimelineView(timeline => timeline.EventHeight(50));17. //views.TimelineWeekView(timeline => timeline.EventHeight(50));18. //views.TimelineWorkWeekView(timeline => timeline.EventHeight(50));19. //views.TimelineMonthView(timeline =>20. //{21. // timeline.StartTime(DateTime.Now);22. // timeline.EndTime(DateTime.Now.AddMonths(1));23. // timeline.MajorTick(1440);24. // timeline.EventHeight(50);25. //});26. 27. })28. .Timezone("Etc/UTC")29. .Group(group => group.Resources("WorkCenters" /*,"Attendees"*/).Orientation(SchedulerGroupOrientation.Vertical))30. .Resources(resource =>31. {32. resource.Add(m => m.ScheduleRowID)33. .Title("Work Center")34. .Name("WorkCenters")35. .DataTextField("Text")36. .DataValueField("Value")37. .DataColorField("Color")38. .BindTo(@Model.AvailableWorkCenters);39. })40. .DataSource(d => d41. .ServerOperation(true)42. .WebApi()43. .Model(m =>44. {45. m.Id(f => f.ActivityID);46. m.Field(f => f.Title).DefaultValue("No title");47. //m.RecurrenceId(f => f.RecurrenceID);48. m.Field(f => f.Description).DefaultValue("No Description");49. })50. .Events(events => events.Error("error_handler"))51. .Read(read => read.Action("GetActivities", "Scheduler").Data("setRequestDateTimes"))52. //.Create(create => create.Action("Post", "Scheduler"))53. .Update(update => update.Action("PutActivity", "Scheduler", new { id = "{0}" }))54. //.Destroy(destroy => destroy.Action("Delete", "Scheduler", new { id = "{0}" }))55. )))
The code I am using for the Controller is:
01.[Route("Api/[controller]")]02.[ApiController]03.public class SchedulerController : DawnController04.{05. public SchedulerController(DatabaseContext context) : base(context)06. {07. }08. 09. [HttpGet]10. public DataSourceResult GetActivities([DataSourceRequest] DataSourceRequest request, DateTime requestStartDateTime, DateTime requestEndDateTime)11. {12. //Kendo doesnt seem to send the full date range. so + 1 day to end13. requestEndDateTime = requestEndDateTime.AddDays(1);14. 15. List<MeetingViewModel> test = new List<MeetingViewModel>();16. 17. //List<JobTask> Tasks =18. // Context.JobTask.Where(j => JobTask.HasActivityInDateRange(j, requestStartDateTime, requestEndDateTime)).ToList();19. 20. //foreach (JobTask jobTask in Tasks)21. //{22. // foreach (Activites jobTaskAct in jobTask.Activites)23. // {24. // test.Add(new MeetingViewModel()25. // {26. // JobTaskID = jobTask.JobTaskId,27. // ActivityID = jobTaskAct.ActivityId,28. // Title = jobTaskAct.Name,29. // Description = jobTaskAct.Description,30. // Start = jobTaskAct.StartTime,31. // End = jobTaskAct.EndTime,32. // IsAllDay = false,33. // ScheduleRowID = jobTaskAct.Workcenter.WorkCenterId,34. // });35. // }36. //}37. 38. foreach (JobTask jobTask in Context.JobTask)39. {40. if (JobTask.HasActivityInDateRange(jobTask, requestStartDateTime, requestEndDateTime))41. {42. foreach (Activites jobTaskAct in jobTask.Activites)43. {44. test.Add(new MeetingViewModel()45. {46. JobTaskID = jobTask.JobTaskId,47. ActivityID = jobTaskAct.ActivityId,48. Title = jobTaskAct.Name,49. Description = jobTaskAct.Description,50. Start = jobTaskAct.StartTime.ToUniversalTime(),51. End = jobTaskAct.EndTime.ToUniversalTime(),52. IsAllDay = false,53. ScheduleRowID = jobTaskAct.Workcenter.WorkCenterId,54. });55. }56. }57. }58. return test.ToDataSourceResult(request);59. }60. 61. 62. [HttpPut("{id}")]63. public IActionResult PutActivity(int id, MeetingViewModel task)64. {65. if (ModelState.IsValid && id == task.ActivityID)66. {67. try68. {69. //breakpoint here70. bool a = true;71. //update the db here72. }73. catch (DbUpdateConcurrencyException)74. {75. return new NotFoundResult();76. }77. 78. return new StatusCodeResult(200);79. }80. else81. {82. return BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(error => error.ErrorMessage));83. }84. }85.}
What could be the issue for me?
