如何在 MVC 剃须刀视图中以"MM"格式创建月份下拉列表 asp.net?



我想以MM格式循环几个月,我这样做,但是几个月格式是1、2、3,...等,我希望格式为01,02,03我怎么做

<select id="CreditCardExpiryDateMonth" class="dropdown form-control">
    @for (var iMonth = DateTime.Now.Month; iMonth <= 12; iMonth++)
    {
        <option value="@iMonth"@(DateTime.Now.Month == iMonth ? " selected" : "")>@iMonth</option>
    }
</select>

任何建议

您可以使用 ToString格式化int。

<select id="CreditCardExpiryDateMonth" class="dropdown form-control">
     @for (var iMonth = 1; iMonth <= 12; iMonth++)
     {
         <option value="@iMonth"@(DateTime.Now.Month == iMonth ? " selected" : "")>@iMonth.ToString("00")</option>
     }
</select>

由于您使用的是MVC,因此可以使用SelectListHtml.DropdownList帮助者填充您的下拉列表并预选一个值:

@Html.DropDownList("CreditCardExpiryDateMonth",
    new SelectList(Enumerable.Range(1, 12).Select(a => new { Text = a.ToString("00"), Value = a }),
                        "Value", 
                        "Text", 
                        DateTime.Today.Month),
    new { @class = "dropdown form-control" })

这是如何工作的:

  • @Html.DropDownList("CreditCardExpiryDateMonth"):创建一个带有名称和ID的select元素为:" CreditCardexexpiryDatemonth"
  • DropDownList过载中的第二个参数是SelectList。我们通常会从数据库中获取此信息,并在控制器中分配给ViewBag。但是在您的情况下,我们可以使用Enumerable.Range生成12个数字并将它们格式化以适当的字符串。在SelectList的超载中,第四参数是selectedValue。这用于预选下拉菜单中的值。就您而言,这是今天的月份。

  • 最终参数是htmlAttributes。在这里,我们将class添加到SELECT元素。

这种方法灵活且清洁。您的要求是否应该更改为使用全球化或其他内容显示月份名称,您只需要更改SelectList逻辑。

要制作格式mm或01等,请尝试以下操作:

DateTime.Now.Month.ToString("d2")

最新更新