.NET MVC 调度程序/约会开源?谢谢!
2 回答
我们的团队最近有一个 MVC 5 项目有这个需求。该项目需要能够显示数据库中的事件日历以及添加和删除现有日历项目。我们查看了DayPilot Lite和Dhtmlx 的 JavaScript版本 4.1 开源版本。
我们发现了什么
两者都有 JavaScript 版本和 .Net WebForms 和/或 MVC 集成版本,但是对于我们的项目,我们希望 JavaScript 版本优于 MVC 集成版本,因为我们觉得它更干净,更适合我们的开发模型(我们不倾向于使用 3rd方综合控制)。JavaScript 是 Dhtmlx 提供的唯一免费版本,而 DayPilot 为 WebForms 和 MVC 提供精简的开源版本。
两者都有很好的教程在他们的网站和各种网站(如代码项目)上可用。
我们选择了什么
我们在 ASP.Net MVC 5 应用程序中使用了 dhtmlx 的 JavaScript 事件日历/Ajax 调度程序,因为它在它的开源版本中具有我们想要的更多功能。即颜色编码选项已经准备好开箱即用,我们发现 API 非常灵活,暴露的事件和自定义选项非常强大。我们对此非常满意,并发现使用他们的文档站点和示例站点很容易找出我们需要做的所有事情。我们没有使用他们的数据连接器,因为我们发现直接 AJAX 调用在我们的场景中很容易工作。
dhtmlx 入门
这里有几篇关于代码项目的文章,我们用来帮助我们使用 dhtmlx。
http://www.codeproject.com/Articles/148500/Event-Calendar-for-an-ASP-NET-MVC-Application
http://www.codeproject.com/Articles/249921/How-to-Build-a-Room-Booking-Calendar-with-dhtmlxSc
如果链接停止工作,作者是他们两人的Stas Wolski。这两个例子都是旧的,但仍然有效。最后,我们还使用了他们的在线演示(可以下载)和在线文档站点。
知识共享
我们对日历的最大技巧之一是日期格式匹配(或在我们最初的情况下不匹配)。
我们使用了scheduler.config.xml_date = "%m/%d/%Y %H:%i"
.
对于来自我们的 MVC 视图模型 (VM)的日期@Model.StartDate.ToString("d")
,如果它是 VM 中的日期,我们确保将它们转换为短日期 () 的字符串格式。
如果 VM 将日期作为字符串传递,那么我们确保控制器使用以下格式示例 ( item.StartDate.ToString("MM/dd/yyyy HH:mm:ss")
)。
我们使用的一些潜在有用的 API 可能只是有用的。
对日历点击做出反应 - 看看scheduler.attachEvent
更改小时刻度外观 - 看看scheduler.templates.hour_scale
需要自定义不同事件类型的视图——看看scheduler.renderEvent
和scheduler.templates.event_class
在日历中隐藏/忽略周末 - 看看scheduler.ignore_week
需要有一个日历操作的确认对话框 - 看看scheduler._dhtmlx_confirm
缩小问题
我们确实发现了一个关于 JS 版本和 MVC 的问题,特别是我们没有解决的问题。如果您捆绑并缩小 dhtmlx 的脚本,调度程序会在调度程序对象被重命名并变为未定义时中断。我们只需将脚本设置为捆绑,而不是通过使用Bundle
而不是缩小ScriptBundle
。
bundles.Add(new Bundle("~/bundles/dhtmlx/calendar").Include(
"~/Scripts/dhtmlx/dhtmlxscheduler.js",
"~/Scripts/dhtmlx/ext/dhtmlxscheduler_limit.js",
"~/Scripts/dhtmlx/ext/dhtmlxscheduler_minical.js",
"~/Scripts/dhtmlx/ext/dhtmlxscheduler_readonly.js"));
我确信有办法解决这个问题,但在我们的案例中我们并不太担心这个问题,因为应用程序的这一部分不会获得大量流量......
Check this http://www.codeproject.com/Articles/404647/AJAX-Event-Calendar-Scheduler-for-ASP-NET-MVC-3-in
I will use it in next project