我有一个enum
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...
但我得到的只是例外:
传递到字典中的模型项为null,但此字典需要“TestProject.Models.Entity.Gender”类型的非null模型项。
这是编辑器模板的工作原理还是完全偏离轨道?
修改
如果删除模板文件(Gender.cshtml
),我将获得一个文本字段作为编辑器,并且不会抛出任何异常。
此外,这是一个Create
视图,在控制器中我没有传递任何对象。我只是致电return View();
答案 0 :(得分: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 }))