在ASP.NET MVC裡應該沒有人願意用<asp:Calendar ...>這個控制項吧?它必須要求伺服器端的一個form,但這已經違背了MVC的原則,所以我們不能用它啦。
或許你可以用javascript的日曆來解決你的問題,那也很不錯。
我這裡向你推薦一個日曆“控制項”,它是擴充到HtmlHelper的,所以你可以在頁面裡使用<%= Html.Calendar() %>就可以得到一個標準化的日曆了。
要下載源碼和例子請到:http://shinyzhu.com/blog/entry/aspnet-mvc-calendar(這個地址暫時關閉了,請到下面的連結)
另外別忘了支援這個項目:http://www.codeplex.com/mvcapps
首先說說這個日曆的作用,簡單一點地說呢,就是可以顯示指定月份的日曆,最簡單的方式就是 Html.Calendar ,它產生一個當前月份的日曆。要指定日期也需要指定一個名字,因為同一個id不能在同一個頁面出現多次,所以我這麼要求了。代碼是:
<%= Html.Calendar("otherName", selectedDate) %>
就可以顯示指定日期那個月份了。
其實這個的原理是遍曆月份的每一天,然後輸出HTML字串,很簡單吧?
我的一個需求是要把當前日誌按日期歸檔,有日誌的那天我需要在日曆上有一個連結,連結到這一天的歸檔。
這個就是我擴充它的原因了。
具體應用請看代碼:
public static string Calendar(this HtmlHelper helper, string name, DateTime selectedDate, IEnumerable<DateTime> rawDates, string controllerName, string actionName);
這個是方法原型。
像這麼用:
得到的效果是:
好了。需要注意的地方就是,目前這個日曆連結中,controller和action是參數指定的,values目前只支援date=year-month-day或date=year-month兩種格式。你可以在Route配置裡配置一個 "blog/archive/{date}“ 然後就可以產生像我的網站那種連結了。很方便吧?
歡迎砸雞蛋哦!謝謝啦。圖片已更新。