2

我有一个视图模型,其中包含具有可空类型的枚举,如下所示:

public StudyLevel? studyLevel { get; set; }

我已经制作了自定义 html 助手来显示一个下拉列表,用于将枚举呈现到视图中,可以使用的情况下显示为空

<option value="null">No value</option>

问题是当我提交表单模型状态时给我错误:

studylevel cannot be "null" .

你能建议我任何方法来帮助我处理视图中的可为空类型吗?

4

2 回答 2

2

我可能错了,但我很确定可空枚举和 MVC 默认模型绑定器存在一些限制。我会建议有一个代表“没有价值”的状态,而不是例如

StudyLevel.None

这样你就不需要处理检查null等。

于 2012-12-14T10:45:35.787 回答
1

如果您更改您的 html 帮助程序以显示这样的 null 值怎么办?

<option>No value</option>

还是像这样?

<option value="">No value</option>

编辑:更好的选择(IMO)是创建一个集合,SelectListItem然后使用内置的 HTML 帮助器。请查看我几个月前创建的这篇文章,它可能会对您有所帮助。你可以像这样使用它:

@Html.EnumDropDownList<StudyLevel?>("studyLevel", "No value")

更多信息在这里:

ASP.NET MVC:为枚举创建本地化 DropDownLists

于 2012-12-14T11:02:07.710 回答