2

第一次使用 MVC 和 Kendo Scheduler,我无法将数据显示在日历上。我有以下型号

public class Events : ISchedulerEvent
    {
        public int Id { get; set; }

        public string Description { get; set; }

        public DateTime End { get; set; }

        public string EndTimezone { get; set; }

        public bool IsAllDay { get; set; }

        public string RecurrenceException { get; set; }

        public string RecurrenceRule { get; set; }

        public DateTime Start { get; set; }

        public string StartTimezone { get; set; }

        public string Title { get; set; }
    }

我的控制器只是简单地创建这个类的一个实例并向其中添加数据并返回一个列表,如下所示:

public ActionResult Index()
        {
            return View(GetAll());
        }

        public List<Events> GetAll()
        {
            var p = new List<Events>();

            p.Add(new Events
            {
                Id = 1,
                Title = "Board Meeting",
                Start = DateTime.Now,
                End = DateTime.Now.AddHours(2)

            });

            return p;
        }

我的看法很简单:

@using Kendo.Mvc.UI;

@(Html.Kendo().Scheduler<Optic.Models.Calendar.Events>()
        .Name("scheduler")
        .Date(new DateTime(2014, 1, 22))
        .StartTime(new DateTime(2013, 6, 13, 07, 00, 00))
        .EndTime(new DateTime(2013, 6, 13, 21, 00, 00))
        .Editable(false)
        .Height(600)
        .Views(views =>
        {
            views.DayView();
            views.WeekView();
            views.MonthView(month => month.Selected(true));
            views.AgendaView();
        })
        .DataSource(d => d
        .Model(m => m.Id(f => f.Id))        
        )
        .BindTo(Model)
)

日历加载并从一天切换到一个月等工作,但日历中不会填充任何数据。我检查了模型,它确实有数据。为了让数据显示在日历上,我是否遗漏了什么?任何帮助将不胜感激。

4

2 回答 2

3

其实我发现我做错了什么。在 .DataSources(d => d.. blah blah blah 下的视图中,我需要添加一个 .Read("GetAll", "ControllerName")。然后我需要在控制器中添加带有 Json(e .ToDataSourceResult(request), JsonRequestBehavior.AllGet); 如下图。我还需要在 Index action result 中取出代码。解决了这个问题。请参阅以下更改:

看法

@using Kendo.Mvc.UI;
@model List<Optic.Models.Scheduling.Events>

@(Html.Kendo().Scheduler<Optic.Models.Scheduling.Events>()
        .Name("scheduler")
        .Date(new DateTime(2014, 1, 22))
        .StartTime(new DateTime(2013, 6, 13, 07, 00, 00))
        .EndTime(new DateTime(2013, 6, 13, 23, 00, 00))
        .Editable(false)
        .Height(600)
        .Views(views =>
        {
            views.DayView();
            views.WeekView(week => week.Selected(true));
            views.MonthView();
            views.AgendaView();
        })
        .DataSource(d => d
        .Model(m => m.Id(f => f.Id)) 
        .Read("GetAll", "Scheduling")       
        )

        .BindTo(Model)
)

控制器

 public class SchedulingController : Controller
    {
        //
        // GET: /Scheduling/

        public ActionResult Index()
        {
            return View();
        }

        public JsonResult GetAll([DataSourceRequest] DataSourceRequest request)
        {
            var e = new List<Events>
            {
                new Events
                {
                    Id =1,
                    Title="Testing 1",
                    Start= DateTime.Now.AddHours(1),
                    End = DateTime.Now.AddHours(2),
                    IsAllDay = false

                },
                new Events
                {
                    Id=2,
                    Title="Testing 2",
                    Start = DateTime.Now.AddHours(3),
                    End = DateTime.Now.AddHours(4),
                    IsAllDay = false
                }
            };

            return Json(e.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
        }

    }
于 2014-01-24T13:17:56.113 回答
0

在您的 ActionMethod 中,您需要将返回更改为:

return View(p); // where p is your model = List<Event>;

然后在视图的第一行添加:

@model List<Event>
于 2014-01-23T00:23:50.880 回答