gpt4 book ai didi

c# - 如何为枚举创建 EditorTemplate?

转载 作者:行者123 更新时间:2023-11-30 12:46:24 26 4
gpt4 key购买 nike

我有一个带有enum

的模型
public enum Gender
{
Male,
Female,
Unspecified
}

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

因为这个 Gender 可能会在其他类中使用,所以我想为它创建一个 EditorTemplate 并在创建/编辑 View 中请求一个编辑器:

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

之后,我在 Views/Shared/EditorTemplates/Gender.cshtml 中创建了一个局部 View 。在模板中,我添加了一些仅用于测试的内容,例如:

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

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

但我得到的只是一个异常(exception):

The model item passed into the dictionary is null, but this dictionary requires a non-null model item of type 'TestProject.Models.Entity.Gender'.

这是编辑器模板的工作方式还是我完全偏离了轨道?

编辑:

如果我删除模板文件 (Gender.cshtml),我将获得一个文本字段作为编辑器,并且不会抛出任何异常。

此外,这是针对 Create View 的,在 Controller 中我没有向它传递任何对象。我只是调用 return View();

最佳答案

你可以试试这样的东西

@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 }))

关于c# - 如何为枚举创建 EditorTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20445546/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com