0

ich eine ASP.NET MVC-Anwendung in meiner Sicht entwickelt, habe ich einen Schedulerwie verhindern schließen Fenster für Kendo-Scheduler

@(Html.Kendo().Scheduler<MeetingModel>() 
    .Name("scheduler") 
    .Date(new DateTime(2016, 4, 01)) 
    .StartTime(new DateTime(2016, 4, 01, 00, 00, 00)) 
    .Height(600) 

    .Views(views => { 
     views.DayView(d => d.Footer(false)); 
     views.WeekView(weekView => weekView.Footer(false).Selected(true)); 
     views.MonthView(); 
     views.AgendaView(); 

    }) 
    .Editable(editable => { 
     editable.TemplateName("EditMeeting").Destroy(false).Update(false).Resize(false); 
    }) 
.AllDaySlot(false).Events(e=>e.Edit("scheduleEdit").Move("scheduler_move").MoveEnd("scheduler_moveEnd")) 

    .DataSource(d => d 
     .Model(m => { 
      m.Id(f => f.IDMeeting); 
      m.Field(f => f.Title).DefaultValue("No title"); 
     }) 
     .Events(e => e.Error("error_handler").RequestEnd("onRequestEnd")) 
     .Read("Meeting_Read", "Meeting") 
     .Create("Meeting_Create", "Meeting") 
     .Destroy("Meeting_Destroy", "Meeting") 
     .Update("Meeting_Update", "Meeting") 
    ) 
) 

, wenn ich die Wirkung von Add Sitzung bestätigen, habe ich einen benutzerdefinierten Fehler, die ich hinzufügen sie zu ModelState.AddModelError, wird das Fenster für editMeeting geschlossen.

function error_handler(e) { 
    if (e.errors) { 
     var message = "Errors:\n"; 
     $.each(e.errors, function (key, value) { 
      if ('errors' in value) { 
       $.each(value.errors, function() { 
        message += this + "\n"; 
       }); 
      } 
     }); 
     var scheduler = $("#scheduler").data("kendoScheduler"); 
     scheduler.one("dataBinding", function (e) { 
      //prevent saving if server error is thrown 
      e.preventDefault(); 
     }) 
     alertify.log(message, "error", 4000); 
    } 
} 

wie kann ich die Nähe des Fensters zu verhindern, muss das Fenster nicht schließen, wenn es einen Fehler hat

Antwort

0

Grundsätzlich ist die „Fehler“ Event-Handler, die Sie zur Verfügung stellen sollten verhindern, dass die Änderung als den einzigen Weg, arbeiten Fenster vom Schließen soll das nächste "DataBinding" -Ereignis verhindern. Möglicher Grund für das aktuelle Verhalten könnte sein, dass das Fehlerereignis nicht ausgelöst wird, da Sie die Fehler des Modellstatus nicht im Feld "Fehler" der Antwort zurückgeben. Hier ist die korrekte Methode zum Zurückgeben der ModelState-Fehler zurück an die Clientseite bei Verwendung der Erweiterungsmethode "ToDataSourceResult":

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