2010-03-17 123 views
3

任何人都知道我在哪裏可以找到一個html helper或什麼東西會產生一個由3個下拉列表組成的日期選擇器?任何人都有一些下拉式日期選擇器爲asp.net mvc

+0

@Omu:你可以對你的意思是「三個下拉菜單」什麼更具體的? – TFD 2010-03-24 20:47:29

+0

我假設日,月,年的下拉列表? – Omar 2010-03-25 01:01:13

+0

是的,單獨的日/月/年的下拉列表 – Omu 2010-03-25 09:17:25

回答

3

這是我的小幫手。

我自己解釋,我相信。可以調整排列順序(月/日/年或日/月/年),如果您使用.NET 4,則可以爲名稱設置默認參數。

編輯:清理,以減少眼睛的文本出血

/// <summary> 
/// Creates a days, months, years drop down list using an HTML select control. 
/// The parameters represent the value of the "name" attribute on the select control. 
/// </summary> 
/// <param name="dayName">"Name" attribute of the day drop down list.</param> 
/// <param name="monthName">"Name" attribute of the month drop down list.</param> 
/// <param name="yearName">"Name" attribute of the year drop down list.</param> 
/// <returns></returns> 
public static string DatePickerDropDowns(this HtmlHelper html, string dayName, string monthName, string yearName) 
{ 
    TagBuilder daysList = new TagBuilder("select"); 
    TagBuilder monthsList = new TagBuilder("select"); 
    TagBuilder yearsList = new TagBuilder("select"); 

    daysList.Attributes.Add("name", dayName); 
    monthsList.Attributes.Add("name", monthName); 
    yearsList.Attributes.Add("name", yearName); 

    StringBuilder days = new StringBuilder(); 
    StringBuilder months = new StringBuilder(); 
    StringBuilder years = new StringBuilder(); 

    int beginYear = DateTime.UtcNow.Year - 100; 
    int endYear = DateTime.UtcNow.Year; 

    for (int i = 1; i <= 31; i++) 
     days.AppendFormat("<option value='{0}'>{0}</option>", i); 

    for (int i = 1; i <= 12; i++) 
     months.AppendFormat("<option value='{0}'>{0}</option>", i); 

    for (int i = beginYear; i <= endYear; i++) 
     years.AppendFormat("<option value='{0}'>{0}</option>", i); 

    daysList.InnerHtml = days.ToString(); 
    monthsList.InnerHtml = months.ToString(); 
    yearsList.InnerHtml = years.ToString(); 

    return string.Concat(daysList.ToString(), monthsList.ToString(), yearsList.ToString()); 
} 
+0

我想它需要一些JavaScript來處理客戶端約束,因爲現在每個人都可以選擇2月31日 – Omu 2010-03-25 09:19:47

+0

是的,只要一定要把約束檢查服務器端。 – Omar 2010-03-25 09:35:02

-1

Telerik has a library一些免費的ASP.Net MVC控件。

他們作爲輔助方法工作,看起來不錯。例如,DatePicker的工作原理如下:

<%= Html.Telerik().DatePicker() 
     .Name("DatePicker") 
     .MinDate(Model.MinDate.Value) 
     .MaxDate(Model.MaxDate.Value) 
     .Value(Model.SelectedDate.Value) 
     .ShowButton(Model.ShowButton.Value) 
%> 
+0

不,這是一個日曆的日期選擇器,我想要一個由3個下拉列表組成 – Omu 2010-03-24 05:43:24

相關問題