剃刀月份下拉选择当月

时间:2014-12-10 15:54:15

标签: c# asp.net-mvc razor

我已经看到有很多方法可以创建剃须刀下拉菜单,其中包含数月和数年的范围。但是,有没有一种轻量级的方法来自动选择该下拉列表中的当前月份,而无需使用js / jquery帖子页面渲染?让我们说它是信用卡表单,我想确保下拉菜单自动选择当前月份。

如果您需要代码,请参阅我正在使用的代码:

@{
   int[] months = Enumerable.Range(1, 12).ToArray();
}
@Html.DropDownListFor(x => x.ExpirationMonth, 
                     months.Select(x => 
                          new SelectListItem { 
                            Text = x.ToString(), 
                            Value = x.ToString()
                          }
                     ));

3 个答案:

答案 0 :(得分:3)

@{
    int[] months = Enumerable.Range(1, 12).ToArray();
    int curMonth = DateTime.Today.Month;
}

@Html.DropDownListFor(x => x.ExpirationMonth, months.Select(x => 
    new SelectListItem {
        Text = x.ToString(),
        Value = x.ToString(),
        Selected = (x == curMonth)
    }
))

在构建列表时检查DateTime.Today.Month中的.Select()(并填充Selected属性)。

答案 1 :(得分:1)

这是使用简单的循环和逻辑实现此目标的另一种方法:

<select class="combo">
    @{
        var currnt = DateTime.Now.Month;
        var counter = currnt;
        for (int i = 1; i < 13; i++)
        {
            if (counter > 12)
            {
                counter = 1;
            }
            // option 1 - month number:
            <option>@counter</option>
            // option 2 - month name:
            // <option>@DivisionPortal.Models.Helpers.TimeHelpers.GetMonthName((byte)counter)</option>
            counter++;
        }
    }
</select>

如果有人需要使用数字中的月份名称,这就是
DivisionPortal.Models.Helpers.TimeHelpers.GetMonthName()看起来像:

public static string GetMonthName(byte m)
{
    string smonth = null;

    switch (m)
    {
        case 1:
            {
                smonth = "JAN";
                break;
            }

        case 2:
            {
                smonth = "FEB";
                break;
            }

        case 3:
            {
                smonth = "MAR";
                break;
            }

        case 4:
            {
                smonth = "APR";
                break;
            }

        case 5:
            {
                smonth = "MAI";
                break;
            }

        case 6:
            {
                smonth = "JUN";
                break;
            }

        case 7:
            {
                smonth = "JUL";
                break;
            }

        case 8:
            {
                smonth = "AUG";
                break;
            }

        case 9:
            {
                smonth = "SEP";
                break;
            }

        case 10:
            {
                smonth = "OCT";
                break;
            }

        case 11:
            {
                smonth = "NOV";
                break;
            }

        case 12:
            {
                smonth = "DEC";
                break;
            }
    }

    return smonth;
}

答案 2 :(得分:0)

@{

string curMonth = DateTime.Now.ToString("MMMM");

}

像这样获取当前月份

@Html.DropDownListFor(model => model.SelectedMonth, Enumerable.Range(1, 12).Select(x => new SelectListItem { Value = x.ToString(), Text = System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat.GetMonthName(x) }), curMonth, new { @class = "form-control" })

在模型/ viewModel中创建一个下拉菜单,并将选项标签设置为curMonth和SelectedMonth。