0

我在 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-")
4

1 回答 1

0

我建议为您的模型添加一个额外的属性。并在您的构造函数中填写列表,或者您可以将其直接放入额外属性的获取中并删除集合。为了更容易,我只是把它放在构造函数中。

视图模型

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>
...
于 2013-10-25T07:03:01.493 回答