有没有适用于ASP.NET MVC的下拉日期选择器?

3

请问有人知道在哪里可以找到HTML助手或者其他工具,可以生成由3个下拉框组成的日期选择器吗?


@Omu:你能具体说明一下“三个下拉菜单”是什么意思吗? - TFD
我假设需要一个下拉列表来选择日期、月份和年份? - Omar
是的,为日/月/年分别设置下拉菜单。 - Omu
2个回答

2
这是我的小助手。 我相信它本身就很好理解了。可以调整下拉菜单的顺序(月/日/年或日/月/年),如果你使用.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());
}

我猜这需要一些JavaScript来实现客户端约束,因为现在每个人都可以选择2月31日。 - Omu
是的,请确保服务器端也进行约束检查。 - Omar

-1

Telerik有一个免费的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)
%>

不,那是一个带有日历的日期选择器,我想要一个由3个下拉菜单组成的。 - Omu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接