ASP.NET MVC Scheduler开源?

时间:2011-05-26 14:59:23

标签: asp.net-mvc open-source scheduler appointment

.NET MVC Scheduler /约会开源? 谢谢!

2 个答案:

答案 0 :(得分:10)

我们的团队最近有一个MVC 5项目,有这个需求。该项目需要能够显示数据库中的事件日历以及添加和删除现有日历项。我们查看了DayPilot Lite's& Dhtmlx's JavaScript版本4.1开源版本。

我们找到了什么

两者都有JavaScript版本和.Net WebForms和/或MVC集成版本但是对于我们的项目,我们希望JavaScript版本超过MVC集成版本,因为我们觉得它更干净,更适合我们的开发模型(我们不倾向于使用第三方集成控件)。 JavaScript是Dhtmlx提供的唯一免费版本,而DayPilot为WebForms和MVC提供了Lite开源版本。

两者都有很好的教程可以在他们的网站和各种网站上找到,比如代码项目。

我们选择了什么

我们在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为两者。 这两个例子都很旧但仍然有效。最后,我们还使用了online demos(可以下载)和online documentation网站。

知识分享

我们对日历的最大诀窍之一是日期格式匹配(或我们最初的情况不匹配)。

我们使用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.renderEventscheduler.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"));

我确信有办法解决这个问题,但在我们的案例中我们并不太担心,因为应用程序的这一部分不会获得大量的流量....

答案 1 :(得分:3)