2011-07-25 111 views
0

我已經定義了以下選擇列表:默認選定值

<%= 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? 

我得到一個編譯錯誤,因爲有nullScope之間沒有轉換(因爲Scope是一個結構)。

我該如何做到這一點?

回答

1

我解決了這個問題:使用過載.FirstOption(string value, string text)我可以爲第一個選項指定一個值,然後在未設置範圍時使用該值作爲後備。