ちょっとしたコンテキスト:JQuery DatePickerの日付をcssクラスでマークして、可用性のレベルを示しようとしています。(緑色の日付=大量の可用性、オレンジ色の日付=ある程度の可用性、無効=可用性なし)。結果として生じるサービスを作成しました
ViewBag.AvailabilityTimeMap = IDictionary<DateTime, int>
//int is the availability/capacity of the specified date.
これをビューに書き込んで、DatePickerのbeforeShowDay関数が、渡された日付とディクショナリのDateTimeを一致させることができるようにします。
$('#_uiAppCalendarDiv').datepicker({
beforeShowDay: renderCalendarCallback
});
var dateMap = @Html.Raw(SomeSortOfSerialization(ViewBag.AvailabilityTimeMap));
function renderCalendarCallback(date) {
//eliminate weekends
if ($.datepicker.noWeekends(date) == false){
return false;
}
for(var index in dateMap) {
if (index.key == date.toJSON()){
//apply the appropriate css
return true;
}
}
//date is not in the availability map (should not happen).
return false;
}
正しい「SomeSortOfSerialization」でこれは可能だと思いますか?Json.Encodeは、JavaScriptではあまり処理できない奇妙な形式をDateTimeに使用しているようです。