我已经看到有很多方法可以创建剃须刀下拉菜单,其中包含数月和数年的范围。但是,有没有一种轻量级的方法来自动选择该下拉列表中的当前月份,而无需使用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()
}
));
答案 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。