默认选定值
问题描述:
我已经定义了以下选择列表:默认选定值
<%= 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
是一个结构)。
我该如何做到这一点?
答
我解决了这个问题:使用过载.FirstOption(string value, string text)
我可以为第一个选项指定一个值,然后在未设置范围时使用该值作为后备。