2013-10-25 80 views
0

我已经创建了剃刀MVC这个硬编码dropdownlistfor,但我想用的回路形成这个,因为它只是包含整数值:数字Dropdownlistfor用剃刀MVC 4

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

你能记住我的答案,如果它帮助你的? – Beejee

回答

0

我会建议增加一个额外的财产给你的模型。 并在您的构造函数中填充List,或者您可以直接将它放入额外属性的get中并删除该set。为了使它更容易,我只是把它放在构造函数中。

视图模型

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

也有另一种方式,但我不喜欢这种工作方式。 通过这种方式,您可以在不使用帮助器方法(不是强类型)的情况下在视图中构建select。如果你改变ViewModel这一块,如果代码可能会失败,而你没有注意到。

在你看来:

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