我在我的视图中开发了一个ASP.NET MVC应用程序,我有一个调度程序
@(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")
)
)
当我验证添加会议的操作时,我有一个自定义错误,我将它们添加到ModelState.AddModelError,editMeeting的窗口关闭。
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);
}
}
如何防止窗口关闭,窗口出错时窗口不能关闭
答案 0 :(得分:0)
基本上,您提供的“错误”事件处理程序应该起到防止编辑窗口关闭的唯一方法,就是防止下一个“dataBinding”事件。当前行为的可能原因可能是未抛出错误事件,因为您未在响应的“错误”字段内返回模型状态错误。以下是使用“ToDataSourceResult”扩展方法时将ModelState错误返回给客户端的正确方法:
return Json(new[] { meeting }.ToDataSourceResult(request, ModelState));