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

时间:2013-10-25 06:27:10

标签: razor html.dropdownlistfor

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

@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-")

1 个答案:

答案 0 :(得分:0)

我建议为您的模型添加额外的属性。 并在构造函数中填充List,或者您可以将其直接放入额外属性的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;}

   ...
}

然后在您的视图中,您可以执行以下操作

@Html.DropDownListFor(model => model.Bedrooms, Model.PossibleAmountOfBedRooms , "-Bedrooms-")

还有另一种方法,但我不喜欢这种工作方式。 这样,您可以在视图中构建选择而不使用辅助方法(非强类型)。如果您在没有注意到的情况下代码失败,那么您可以更改ViewModel。

在您的视图中:

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