You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 07:18:19