我定义了以下选择列表:
<%= this.Select("Scope")
.Options(Scopes.AllValues) // static property to get all possible values
.FirstOption("Select scope")
.Class("required")
.Selected(Model.Scope) %>
其中Scope
是这样定义的枚举:
public enum Scope
{
Full,
Partial
}
我在用户控件上使用它,它为渲染/编辑表单呈现所有表单元素,因此我希望在存在底层模型时以及模型只是一个没有属性的空editmodel时都可以使用它组。但是,由于Scope
是结构,因此在实例化编辑模型时,它会初始化为默认值(这是第一个定义的枚举值,Full
)。因此,永远不会选择Select value
选项。
我知道Model.ID == 0
代表新对象,而Model.ID != 0
代表现有对象,所以我可以用它来确定应该显示的内容。但是,如果我这样做
.Selected(Model.ID != 0 ? Model.Scope : null) // how do I indicate the first item?
我收到编译错误,因为null
和Scope
之间没有转换(因为Scope
是结构)。
我该如何做到这一点?
答案 0 :(得分:1)
我解决了这个问题:使用重载.FirstOption(string value, string text)
我可以为第一个选项分配一个值,然后在未设置范围的情况下将其用作回退。