我正在尝试使用enum
构建下拉列表。
我尝试了以下内容,但不知道如何在视图中显示它。我正在使用MVC framework
public enum Condition
{
And,
Or,
Not,
}
private List<Condition> userTypes = Enum.GetValues(typeof(Condition)).Cast<Condition>().ToList();
public List<Condition> UserType
{
get
{
return userTypes;
}
set
{
userTypes = value;
}
}
上面的代码是否正确显示一个简单的下拉列表? 我如何传递视图以显示下拉列表。 感谢
答案 0 :(得分:2)
在Action
:
ViewData["ddl"] = userTypes.Select(t => new SelectListItem { Text = t.ToString(), Value = ((int)t).ToString() });
在aspx
:
<%=Html.DropDownList("ddl", ViewData["ddl"] as IEnumerable<SelectListItem>)%>
其余的都没问题。
答案 1 :(得分:1)
您希望从属性string
而不是UserType
类型返回Condition
列表。其次,属性必须是readonly
,因为枚举是不变的,用户不会改变它。最后不要使用变量,属性本身处理这个。
public List<string> UserType
{
get
{
return Enum.GetNames(typeof(Condition)).ToList();
}
}
答案 2 :(得分:1)
在您的模型中添加如下列表:
private List conditionList= Enum.GetValues(typeof(Condition)) .Cast() .Select(e => new SelectListItem { Value = ((int)e).ToString(), Text = e.ToString() });
然后在视图中添加此内容
@Html.EditorFor(m=>m.Condition,Model.conditionList)
我相信这会让事情变得更容易。