razor MVC 4中带循环的数字下拉列表

razor MVC 4中带循环的数字下拉列表,razor,html.dropdownlistfor,Razor,Html.dropdownlistfor,我已经在razor MVC中创建了这个硬编码的dropdownlistfor,但我想创建一个循环,因为它只包含整数值: @Html.DropDownListFor(model => model.Bedrooms, new SelectList(new[] { new { ID = 1, Name = "1" }, new { ID = 2, Name = "2" }, new { ID = 3, Name = "3" }, new { ID = 4, Name = "4" }, new {

我已经在razor MVC中创建了这个硬编码的dropdownlistfor,但我想创建一个循环,因为它只包含整数值:

@Html.DropDownListFor(model => model.Bedrooms, new SelectList(new[] { new { ID = 1, Name = "1" }, new { ID = 2, Name = "2" }, new { ID = 3, Name = "3" }, new { ID = 4, Name = "4" }, new { ID = 5, Name = "5" }, new { ID = 6, Name = "6" }, new { ID = 7, Name = "7" } }, "ID", "Name"), "-Bedrooms-")

我建议为您的模型添加一个额外的属性。 并在构造函数中填充该列表,或者您可以将其直接放入额外属性的get中并移除该集。为了让它更简单,我只是把它放在构造函数中

视图模型

public class ViewModelName
{
   ...

   public ViewModelName()
   {
       PossibleAmountOfBedRooms = new List<SelectListItem>();

       for(int i; i < 8; i++)
         PossibleAmountOfBedRooms.Add(new SelectListItem{Text=i.ToString(), Value=i.ToString()});
   }

   public List<SelectListItem> PossibleAmountOfBedRooms {get; set;}

   ...
}

还有另一种方式,但我不喜欢这种工作方式。 这样,您就可以在视图中构建select,而无需使用helper方法(非强类型)。如果您曾经更改过ViewModel,那么这段代码可能会在您没有注意到的情况下失败

在你看来:

...
<select Id="Bedrooms" name="Bedrooms">
  <option value="">-Bedrooms-</option>
  @for(int i; i < 8; i++)
  {
      <option value="@i">@i</option>
  }
</select>
...
。。。
-卧室-
@for(int i;i<8;i++)
{
@我
}
...

如果我的答案对你有帮助,你能帮我标记一下吗?
...
<select Id="Bedrooms" name="Bedrooms">
  <option value="">-Bedrooms-</option>
  @for(int i; i < 8; i++)
  {
      <option value="@i">@i</option>
  }
</select>
...