.NET MVCスケジューラ/アポイントメントオープンソース?ありがとう!
2 に答える
私たちのチームは最近、このニーズに対応するMVC5プロジェクトを実施しました。プロジェクトには、データベースからのイベントのカレンダーを表示する機能と、既存のカレンダーアイテムを追加および削除する機能が必要でした。DayPilotLiteとDhtmlxのJavaScriptバージョン4.1オープンソースバージョンを調べました。
私たちが見つけたもの
どちらにもJavaScriptバージョンと.NetWebFormsおよび/またはMVC統合バージョンがありますが、私たちのプロジェクトでは、MVC統合バージョンよりもJavaScriptバージョンの方がクリーンで、開発モデルにより適合していると感じたため、JavaScriptバージョンが必要でした(3番目を使用する傾向はありません)。パーティ統合コントロール)。JavaScriptはDhtmlxが提供する唯一の無料バージョンでしたが、DayPilotはWebFormsとMVC用のライトオープンソースバージョンを提供しています。
どちらも、自分のサイトやコードプロジェクトなどのさまざまなサイトで利用できる優れたチュートリアルを持っています。
私たちが選んだもの
ASP.Net MVC5アプリで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
リンクが機能しなくなった場合、作成者は両方のStasWolskiです。どちらの例も古いですが、それでも効果的です。最後に、彼らのオンラインデモ(ダウンロード可能)とオンラインドキュメントサイトも使用しました。
知識の共有
カレンダーの最大の秘訣の1つは、日付形式の一致(または最初の場合は不一致)でした。
の形式を使用しました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で、解決できなかった落とし穴が1つ見つかりました。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"));
それを解決する方法があると確信していますが、アプリのこの部分が大量のトラフィックを取得することはなかったので、私たちの場合はこれについてあまり心配していませんでした...。
これを確認して くださいhttp://www.codeproject.com/Articles/404647/AJAX-Event-Calendar-Scheduler-for-ASP-NET-MVC-3-in
次のプロジェクトで使用します