2013-12-07 55 views
4

我有一個enum如何爲枚舉創建EditorTemplate?

public enum Gender 
{ 
    Male, 
    Female, 
    Unspecified 
} 

public class FooClass 
{ 
    public Gender UserGender {set; get;} 
} 

由於這Gender一個模型,其他類可以使用,我想爲它創建一個EditorTemplate,並要求在創建/編輯視圖編輯器:

@Html.EditorFor(model => model.UserGender) 

之後,我創建了位於Views/Shared/EditorTemplates/Gender.cshtml的部分視圖。在模板我補上一隻是用於測試,如:

@model TestProject.Models.Entity.Gender 
@Html.TextBox("") 

@model TestProject.Models.Entity.Gender 
Hello... 

,但我得到的卻是一個例外:

傳遞到字典的模型項爲空,但是這個字典需要一個類型爲「TestProject.Models.Entity.Gender」的非空模型項目。

這是編輯器模板如何工作或我完全偏離軌道?

編輯:

如果我刪除模板文件(Gender.cshtml)我得到一個文本框作爲編輯,並沒有拋出異常。

此外,這是爲Create視圖和在控制器我傳遞沒有對象。我只是叫return View();

+1

您的模型'FooClass'是最有可能無效。 –

+0

您能提供視圖和控制器操作嗎? – Grundy

+0

@Mathew最有可能的,因爲它在創建視圖。我應該在視圖中傳遞模型的新實例嗎? 另外,你可以提供一個枚舉EditorTemplate應該如何? – Odys

回答

1

,你可以嘗試這樣的事情

@model Nullable<TestProject.Models.Entity.Gender> 
@Html.ListBox("lb", Enum.GetValues(typeof(TestProject.Models.Entity.Gender)).Cast<TestProject.Models.Entity.Gender>().Select(i => new SelectListItem() { Text = i.ToString(), Value = i.ToString(), Selected=i==Model }))