2013-07-12 145 views
1

我有一個枚舉:MVC3隱藏與枚舉。輸入的值是枚舉鍵不值?

public enum TaskType 
{ 
    None = 100, 
    Install = 101, 
    Decommission = 102, 
    Modify = 103, 
    Rename = 104, 
    Move = 105, 
    Incident = 106, 
    Other = 107 
}; 

,我想通過保存它作爲我的模型的屬性來表示我認爲它的當前值:

public class ProvisioningListModel 
{ 
    public TaskType TaskType { get; set; } 

    public ProvisioningListModel(Task task) 
    { 
     TaskType = task.TaskType; 
    } 
} 

我的觀點有相應:

<%=Html.HiddenFor(model => model.TaskType)%> 

當生成適當的隱藏輸入元素時,其值爲「安裝」而不是「101」。這對我來說似乎令人驚訝,因爲枚舉通常是通過它們的價值而不是它們的關鍵來處理的。

<input id="TaskType" name="TaskType" type="hidden" value="Install"> 

這是MVC中的常見問題嗎?有一個簡單的解決方法嗎?

回答

2

先爲您的枚舉類型由Int

public enum TaskType :int 
{ 
    ... 
繼承

然後只需使用

<%=Html.HiddenFor(model => (int)model.TaskType)%> 
+0

但後來我不得不投回到任務類型的我查看裏面,當我收到我的模型在我控制器我必須再次施放? –

+2

關於爲什麼這將來自程序化立場的任何想法?看起來,當我們不得不作出保存一個或另一個的決定時,枚舉的關鍵字遠沒有它的價值有用。有一點讓MVC的設計決定感到震驚。 –

+0

@SeanAnderson枚舉是有用的,因爲你的枚舉值可能會有所不同,但不是鍵。即使你改變你的枚舉值,你也不需要重寫邏輯。 –