如何在Blazor的Telerik Schedule中重写AllowCreate并替换默认添加弹窗?
解决Blazor Telerik Schedule自定义创建跳转的问题
要实现阻止Telerik Schedule默认的创建弹窗并跳转到自定义页面,你可以通过组件的OnCreate事件拦截默认行为,具体操作如下:
- 保持
AllowCreate="true",确保日历上触发创建的交互入口仍可用; - 绑定
OnCreate事件,在事件处理方法中取消默认弹窗逻辑,再执行自定义页面跳转。
完整代码示例
Razor 组件部分
@inject NavigationManager NavManager <TelerikSchedule Data="@Appointments" AllowCreate="true" OnCreate="@HandleCustomCreate"> <ScheduleViews> <ScheduleDayView></ScheduleDayView> <ScheduleWeekView></ScheduleWeekView> <!-- 按需添加其他视图 --> </ScheduleViews> </TelerikSchedule>
C# 逻辑部分
// 预约数据模型示例 public class Appointment { public int Id { get; set; } public string Title { get; set; } public DateTime Start { get; set; } public DateTime End { get; set; } } private List<Appointment> Appointments = new List<Appointment>(); private void HandleCustomCreate(SchedulerCreateEventArgs args) { // 取消Telerik自带的添加弹窗 args.IsCancelled = true; // 跳转到自定义预约创建页面,替换为你的实际路由 NavManager.NavigateTo("/appointments/new"); // 可选:传递用户点击的时间参数到自定义页面 var startTimestamp = args.Start.ToString("yyyy-MM-ddTHH:mm:ss"); var endTimestamp = args.End.ToString("yyyy-MM-ddTHH:mm:ss"); NavManager.NavigateTo($"/appointments/new?start={startTimestamp}&end={endTimestamp}"); }
关键说明
SchedulerCreateEventArgs的IsCancelled属性设为true后,会完全阻断组件默认的弹窗逻辑;- 通过
NavigationManager实现页面跳转,需确保已在组件中注入该服务; - 可从
args.Start和args.End获取用户触发创建时的时间范围,将其作为参数传递到自定义页面,优化用户体验。
内容的提问来源于stack exchange,提问作者sudathG
相关产品推荐
相关产品推荐

