Несколько событий ASP.Net MVC 4 Kendo UI Scheduler добавляются при обновлении события

Я новичок в кендо Уи. Я использовал элемент управления планировщиком в своем проекте ASP.Net MVC 4 и реализовал его с использованием вызовов Ajax, как определено в следующем руководстве.

http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/helpers/scheduler/ajax-editing.

Моя проблема в том, что когда я пытаюсь отредактировать событие, оно отредактирует событие, а также создаст одну или несколько повторяющихся записей в базе данных с теми же данными. Как мне этого избежать.

Ниже приведен мой Index.cshtml

@(Html.Kendo().Scheduler<Portal.Presentation.Web.BoundedContext.QC.MVC.Areas.Razor.Models.LeavePlan>()
  .Name("scheduler")
.Date(DateTime.Now)
.Height(600)
.AllDaySlot(true)
.Views(views =>
{
    views.DayView();
    views.WeekView(weekView => weekView.Selected(true));
    views.MonthView();
})
.Timezone("Etc/UTC")
.Resources(resource =>
{
    resource.Add(m => m.PlanTypeId)
        .Title("Plan Type")
        .DataTextField("Text")
        .DataValueField("Value")
        .DataColorField("Color")
        .BindTo(new[] { 
            new { Text = "Annual Leave", Value = 1, Color = "#f8a398" } ,
            new { Text = "Casual Leave", Value = 2, Color = "#51a0ed" } ,
            new { Text = "Sick Leave", Value = 2, Color = "#55a098" } ,
            new { Text = "Travel", Value = 3, Color = "#56ca85" } 
        });
})
.DataSource(d => d
    .Model(m => {
        m.Id(f => f.TaskID);
        m.Field(f => f.ResourceId).DefaultValue(1);
        //Set the recurrence ID field from the model:
        //m.RecurrenceId(f => f.RecurrenceID);
    })
    .Read("Tasks_Read", "LeavePlan")
    .Create("Tasks_Create", "LeavePlan")
    .Destroy("Tasks_Destroy", "LeavePlan")
    .Update("Tasks_Update", "LeavePlan")
))

Ниже приведен мой метод обновления.

  public ActionResult Tasks_Update([DataSourceRequest]DataSourceRequest request, LeavePlan leave)
    {
        if (ModelState.IsValid)
        {

                // Create a new Task entity and set its properties from the posted TaskViewModel
            var entity = new ResourceLeavePlan
                {
                    StartDate = leave.Start
                    ,Title = leave.Title
                    ,EndDate = leave.End.ToUniversalTime()
                    ,ResourceLeavePlanId = (int)leave.TaskID
                    ,IsAllDay=leave.IsAllDay
                    ,RecurrenceId=leave.ResourceId
                    ,Description=leave.Description
                    ,RecurrenceException=leave.RecurrenceException
                    ,LeaveTypeId=(int)leave.PlanTypeId
                    ,ResourceId = resourceId
                };

            _resourceLeavePlanService.Update(entity);
            }

        return Json(new[] { leave }.ToDataSourceResult(request, ModelState));
    }

И помощь в этом будет оценена.

Модель такая же, как и модель в учебнике по ссылке выше.

а также был бы признателен, если бы кто-нибудь объяснил мне использование «RecurrenceId» в планировщике


person Thanushka    schedule 10.02.2014    source источник


Ответы (1)


Вам просто не хватает уникального TaskID в объекте вашего объекта.

    var entity = new ResourceLeavePlan
    {

    TaskID = leave.TaskID // Just try adding this line please and it would work

    ,StartDate = leave.Start
    ,Title = leave.Title
    ,EndDate = leave.End.ToUniversalTime()
    ,ResourceLeavePlanId = (int)leave.TaskID
    ,IsAllDay=leave.IsAllDay
    ,RecurrenceId=leave.ResourceId
    ,Description=leave.Description
    ,RecurrenceException=leave.RecurrenceException
    ,LeaveTypeId=(int)leave.PlanTypeId
    ,ResourceId = resourceId
    };
person Ahsan Raza    schedule 20.11.2014
comment
У меня была такая же проблема, и это решило мою проблему - person FarFigNewton; 17.12.2015