This is not a typical scenario and that makes the solution a bit complicated. What you need to do in the JavaScript is to call the server-side handler and then make sure the request has been completed before redirecting to the other page.
This is how you fire the server-side OnEventMode handler using your own JavaScript:
<%= Html.DayPilotScheduler("dps", new DayPilotSchedulerConfig {
BackendUrl = ResolveUrl("~/Scheduler/Backend"),
...
EventMoveHandling = EventMoveHandlingType.CallBack,
EventMoveJavaScript = "dps.eventMoveCallBack(e, newStart, newEnd, newResource);",
...
Then you need to know that the request has been sent successfully. The right way is to use AfterRenderJavaScript that gets called after the callback response is processed. You need to know that this callback was a result of eventMoveCallBack - you can do that by passing custom object to Update() on the server side:
protected override void OnTimeRangeSelected(TimeRangeSelectedArgs e)
{
new EventManager(Controller).EventCreate(e.Start, e.End, "Default name", e.Resource);
Update("moved", CallBackUpdateType.EventsOnly);
}
<%= Html.DayPilotScheduler("dps", new DayPilotSchedulerConfig {
BackendUrl = ResolveUrl("~/Scheduler/Backend"),
...
EventMoveHandling = EventMoveHandlingType.CallBack,
EventMoveJavaScript = "dps.eventMoveCallBack(e, newStart, newEnd, newResource);",
AfterRenderJavaScript = "if (isCallBack && data == 'moved') { document.location.href = 'NewPage.aspx'; }",
...
You can also use this hack and just wait some time to allow the request to complete:
<%= Html.DayPilotScheduler("dps", new DayPilotSchedulerConfig {
BackendUrl = ResolveUrl("~/Scheduler/Backend"),
...
EventMoveHandling = EventMoveHandlingType.CallBack,
EventMoveJavaScript = "dps.eventMoveCallBack(e, newStart, newEnd, newResource); setTimeout(function() { document.location.href = 'NewPage.aspx'; }, 500);",
...