Kendo ui 无法将数据绑定到剑道计划程序

Kendo ui 无法将数据绑定到剑道计划程序,kendo-ui,kendo-asp.net-mvc,kendo-scheduler,Kendo Ui,Kendo Asp.net Mvc,Kendo Scheduler,我有一个剑道调度程序,它显示在视图中,但没有任何数据 视图上的计划程序: @(Html.Kendo().Scheduler<ProjName.Models.ScheduleInspectionModel>() .Name("scheduler") .Views(views => { views.DayView(); views.WorkWeekView(); views.WeekView();

我有一个剑道调度程序,它显示在视图中,但没有任何数据

视图上的计划程序:

@(Html.Kendo().Scheduler<ProjName.Models.ScheduleInspectionModel>()
    .Name("scheduler")
    .Views(views =>
    {
        views.DayView();
        views.WorkWeekView();
        views.WeekView();
        views.MonthView(mv => mv.Selected(true));
        views.AgendaView();
    })
    .Timezone("Etc/UTC")
    .DataSource(d => d
        .Read("ControllerName", "GetScheduleInspections")
    )
)
@(Html.Kendo().Scheduler())
.Name(“调度程序”)
.视图(视图=>
{
views.DayView();
views.WorkWeekView();
views.WeekView();
views.MonthView(mv=>mv.Selected(true));
views.AgendaView();
})
.时区(“Etc/UTC”)
.DataSource(d=>d
.Read(“ControllerName”、“GetScheduleInspections”)
)
)
数据源调用以下控制器方法:

public ActionResult GetScheduleInspections([DataSourceRequest]DataSourceRequest request)
{
    ScheduleInspectionModel sim = new ScheduleInspectionModel();
    var gsio = sim.getScheduleInspections();

    List<ScheduleInspectionModel> list = new List<ScheduleInspectionModel>();

    if (gsio.scheduleinspections != null)
    {
        foreach (wsScheduleInspection.scheduleInspectionOutput scheduleInspection in gsio.scheduleinspections)
        {
            ScheduleInspectionModel sim2 = new ScheduleInspectionModel
            {
                GlobalEquipConditionId = scheduleInspection.globalEquipmentCondition.id,
                Description = scheduleInspection.globalEquipmentCondition.code,
                Start = DateTime.Now,
                End = DateTime.Now.AddHours(2),
                Title = scheduleInspection.globalEquipmentCondition.code,
                IsAllDay = true

            };

            list.Add(sim2);
        }
    }
    return Json(list.ToDataSourceResult(request));
}
公共操作结果GetScheduleInspections([DataSourceRequest]DataSourceRequest请求)
{
ScheduleInspectionModel sim=新ScheduleInspectionModel();
var gsio=sim.getScheduleInspections();
列表=新列表();
if(gsio.scheduleinspections!=null)
{
foreach(wsScheduleInspection.scheduleInspection在gsio.scheduleinspections中输出scheduleInspection)
{
ScheduleInspectionModel sim2=新ScheduleInspectionModel
{
GlobalEquipConditionId=scheduleInspection.globalEquipmentCondition.id,
Description=scheduleInspection.globalEquipmentCondition.code,
开始=日期时间。现在,
End=DateTime.Now.AddHours(2),
标题=scheduleInspection.globalEquipmentCondition.code,
IsAllDay=真
};
列表。添加(sim2);
}
}
返回Json(list.ToDataSourceResult(request));
}

但此方法永远不会运行,尽管它位于Scheduler Datasource属性上。它应该运行该方法并返回检查列表。我不知道为什么这个方法没有被击中。例如,对于剑道网格,数据源读取上的方法会在页面加载后立即命中。

是的,调度程序读取会在页面加载后立即调用。但它可能没有像预期的那样以正确的格式获取数据。因此它无法绑定数据。如果您可以检查这些修改:

1) 在调度程序的“数据源”中定义“模型”,如本文中所定义

2) 此外,action方法还应返回“MyModel”类的对象(定义了调度器的模型)

不是“ScheduleInspectionModel”类。

请尝试确保您的定义包含这两项,因为我认为它们是必需的

.Date(new DateTime(2013, 6, 13))
.StartTime(new DateTime(2013, 6, 13, 7, 00, 00))
编辑

我能够使用以下代码:

型号

// NOTE: It's important that your model class implements ISchedulerEvent
public class TaskViewModel : ISchedulerEvent
{
    public string Title { get; set; }
    public string Description { get; set; }
    public bool IsAllDay { get; set; }
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
    public string StartTimezone { get; set; }
    public string EndTimezone { get; set; }
    public string RecurrenceRule { get; set; }
    public string RecurrenceException { get; set; }
}
SchedulerController.cs

public class SchedulerController : Controller
{
    // GET: Scheduler
    public ActionResult Index()
    {
        var model = new SchedulerViewModel();

        // In this case, it doesn't matter what this model is really since we're using AJAX binding
        return View(model);
    }

    // I usually have my binding methods for Kendo use HttpPost
    [HttpPost]
    public ActionResult GetData([DataSourceRequest] DataSourceRequest request)
    {
        var data = new List<TaskViewModel>
            {
                new TaskViewModel
                    {
                        Start = new DateTime(2014, 12, 1, 8, 0, 0),
                        End = new DateTime(2014, 12, 1, 17, 0, 0),
                        Title = "Task 1"
                    }
            };

        return Json(data.ToDataSourceResult(request));
    }
}
公共类调度控制器:控制器
{
//获取:调度程序
公共行动结果索引()
{
var模型=新SchedulerViewModel();
//在本例中,这个模型实际上是什么并不重要,因为我们使用的是AJAX绑定
返回视图(模型);
}
//我通常有我的剑道绑定方法使用HttpPost
[HttpPost]
公共操作结果GetData([DataSourceRequest]DataSourceRequest请求)
{
var数据=新列表
{
新TaskViewModel
{
开始=新的日期时间(2014、12、1、8、0、0),
结束=新的日期时间(2014、12、1、17、0、0),
Title=“任务1”
}
};
返回Json(data.ToDataSourceResult(request));
}
}
Index.cshtml(查看)

@(Html.Kendo().Scheduler())
.Name(“调度程序”)
.视图(视图=>
{
views.DayView();
views.WorkWeekView();
views.WeekView();
views.MonthView(mv=>mv.Selected(true));
views.AgendaView();
})
.时区(“Etc/UTC”)
.DataSource(d=>d
.Read(“获取数据”、“调度程序”)
))

如果这对您不起作用,我会确保您的版本(剑道、jQuery等)是正确的。希望这有帮助。

谢谢你的回答。我试过了,但没有改变。我不认为他们是必需的。。。还有其他建议吗?试着用
[HttpPost]
标记控制器方法?或者将你的返回值改为AllowGett也不是这样,这个方法仍然没有被称为DHMM,我将不得不在午餐或今晚尝试一些东西,因为我在白天的工作中不使用剑道。嗨!从哪里可以得到IsScheduleEvent?
@(Html.Kendo().Scheduler<TaskViewModel>()
    .Name("scheduler")
    .Views(views =>
    {
        views.DayView();
        views.WorkWeekView();
        views.WeekView();
        views.MonthView(mv => mv.Selected(true));
        views.AgendaView();
    })
    .Timezone("Etc/UTC")
    .DataSource(d => d
        .Read("GetData", "Scheduler")
    ))