Asp.net MVC 如何用数字填充下拉列表

Asp.net MVC how to populate dropdown list with numbers

我见过类似的例子,人们需要用一个对象列表来填充,但我想要实现的是在我看来我的 DropdownlistFor 中有数字 1-10。有没有一种简单的方法可以做到这一点。以下是我的。

<div class="form-group">
    @Html.LabelFor(model => model.NumberOfTickets, new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.NumberOfTickets)
        @Html.ValidationMessageFor(model => model.NumberOfTickets)
    </div>
</div>

您可以使用如下内容:

@Html.DropDownListFor(m => m.NumberOfTickets, Enumerable.Range(1, 10).Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }))

所有这一切都是创建一个 1 到 10 之间的整数的枚举,然后使用一点 LINQ 将其转换为 Html.DropDownListFor 可以接受的 IEnumerable<SelectListItem>

从当年到 n 年前的年份列表。

int startYear = 1980
@Html.DropDownListFor(m => m.DateofEstablishment, Enumerable.Range(0, (DateTime.Now.Year - startYear -1)).Select(i => new SelectListItem { Text = (DateTime.Now.Year - i).ToString(), Value = i.ToString() }), "Please select year", new { @class = "form-control", @required = "required" })

对于 ASP Mvc 或 Asp Core 的较新版本,您可以使用类似的东西:

<input type="number" asp-for="NumberOfTickets" class="form-control" placeholder="Number of Tickets"  min="1" max="10" />

完整代码为:

<div class="form-group">
@Html.LabelFor(model => model.NumberOfTickets, new { @class = "control-label col-md-2" })
<div class="col-md-10">
    <input type="number" asp-for="NumberOfTickets" class="form-control" placeholder="Number of Tickets"  min="1" max="10" />
    @Html.ValidationMessageFor(model => model.NumberOfTickets)
</div>

这就是我用来将 int 值绑定到模型的方法。 DropDownListFor 需要一个 IEnumerable,对于简单的数字下拉列表,您不需要它。