2014-12-20 118 views
0

我有以下for循环,其中Type是一个枚举。我想通过表单循环,并为每个路线允许下拉类型。如何在for循环中执行EnumDropdownListFor

@for (int i = 0; i < Model.Routes.Count; i++) 
    { 
     @Html.Hidden("Routes[" + index + "].Id", Model.Routes[i].Id) 
     @Html.EnumDropDownListFor("Routes[" + index + "].Id", Model.Routes[i].Type) 
     @Html.Hidden("Routes[" + index + "].Name", Model.Routes[i].Name) 
     @Html.CheckBox("Routes[" + index + "].IsChecked", Model.Routes[i].IsChecked) 
     @Model.Routes[i].Name<br /> 
     index++; 
    } 

public class RouteModel 
{ 
    public Guid Id { get; set; } 
    public RouteType Type { get; set; } 
    public int Number { get; set; } 
    public string Name { get; set; } 
    public bool IsActive { get; set; } 

    public bool IsChecked { get; set; } 
} 

public enum RouteType 
{ 
    Transit, 
    Air, 
    Bus 
} 

我似乎无法弄清楚如何使MVC5 EnumDropDownListFor帮助器在for循环中工作。看起来我可能没有,尽管我想我会问,如果有人遇到同样的问题,并发现了替代品或让他们工作。

EnumDropDownListFor(MSDN)http://msdn.microsoft.com/en-us/library/dn550750(v=vs.118).aspx - 这是我正在使用的帮手,它不是我自己的。

回答

0

因为我没有正确的语法,忘了模型=>部分。 #的n00b

@Html.EnumDropDownListFor(model => Model.Routes[i].Type, "None") 
+1

而且你应该使用强类型的辅助的其他属性也'@ Html.HiddenFor(M => m.Routes [I] .ID)'和'@ Html.CheckBoxFor(M = > m.Routes [i] .IsChecked)':) –

+0

同意,谢谢。我注意到,当我试图弄清楚事情时,这不是最好的方法。 – devfunkd