2011-05-26 65 views
3

.NET MVC Scheduler /約會開源? 謝謝!ASP.NET MVC Scheduler開源?

+0

您是否在尋找某種東西來呈現計劃或使用ASP.NET MVC創建的開源計劃應用程序? – 2011-05-26 20:03:31

+1

我仍然沒有找到比[this]更好的(http://www.dhtmlx.com/blog/?p=639) – user385411 2011-05-26 18:15:55

回答

9

我們的團隊有這方面的需求最近有一個MVC 5項目。該項目需要能夠顯示來自數據庫的事件日曆以及添加和刪除現有的日曆項目。我們看着DayPilot Lite's & Dhtmlx's JavaScript版本4.1開源版本。

我們發現

兩者都有的JavaScript版本和.Net WebForms和/或MVC集成版本但是我們的項目,我們期望的JavaScript代碼在MVC集成版本,因爲我們認爲這是更清潔和更適合與我們的開發模式(我們不傾向於使用第三方集成控件)。 JavaScript是Dhtmlx提供的唯一免費版本,而DayPilot爲WebForms和MVC提供精簡版開源版本。

在他們的網站和各種網站上都有很好的教程,比如代碼項目。

我們選擇

我們使用DHTMLX的JavaScript事件日曆/阿賈克斯調度在ASP.Net MVC應用5,因爲它有一些更多的功能在它是我們所希望的開源版本。即顏色編碼選項已準備就緒,我們發現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 View Model(VM)的日期,如果它是VM中的日期,我們一定要將它們轉換爲短日期字符串格式(@Model.StartDate.ToString("d"))。

如果虛擬機將日期作爲字符串傳遞,那麼我們確保控制器使用以下格式示例(item.StartDate.ToString("MM/dd/yyyy HH:mm:ss"))。

我們使用的一些潛在的有用的API可能只是有用的。

反應到日曆點擊 - 看看scheduler.attachEvent

更改時間尺度看 - 看看scheduler.templates.hour_scale

需要定製不同的事件類型的視圖 - 看看scheduler.renderEventscheduler.templates.event_class

隱藏/日曆忽略週末 - 看看scheduler.ignore_week

需要有一個確認對話框幷g下日曆操作 - 看看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")); 

我敢肯定有解決的是一個方法,但我們不是太擔心這個問題在我們的情況下,應用程序的這一部分是不會越來越高的通信量....