【问题标题】:Default Value in DropDownList with Enum [duplicate]带有枚举的下拉列表中的默认值[重复]
【发布时间】:2018-10-10 16:42:44
【问题描述】:

我搜索了一下,找不到专门针对我的问题的答案。

我有一个枚举:

public enum CodeType
{
    NotSpecified,
    Absent,
    NoAbsence,
    Other,
    Missing
}

上面的枚举存储在一个结构中。我正在尝试使用 DropDownList 在视图中编辑存储的枚举,效果很好,除了我唯一的问题是我试图将该 DropDownList 的默认值设置为模型的存储枚举。见下文:

@Html.DropDownList("c", EnumHelper.GetSelectList(typeof(CodeType)),Enum.GetValues(typeof(CodeType)))

作为第二个参数,我尝试使用:

@Html.DropDownList("c", EnumHelper.GetSelectList(typeof(CodeType)),Enum.GetValues(typeof(Model.CodeType.ToString())))

但是,这确实将存储的 Enum 值显示为 DropDownList 中的字符串,但如果用户点击提交按钮,除非用户明确单击 DropDownList 并选择一个项目,否则我会收到空​​变量错误。

任何想法如何正确使用 Model.CodeType 作为 DropDownList 中的默认值?

【问题讨论】:

  • 仅供参考,您不必在标题或问题中提供您的标签,因为我们都知道您使用的是 C# 和 MVC4,因为您用它标记了您的问题 - 不需要提及两次。
  • 啊抱歉,我意识到它们在标签中,但想确保人们知道我在使用什么 :)
  • 如果你的属性是CodeType,那么你需要绑定到那个属性——@Html.DropDownListFor(m => m.CodeType, EnumHelper.GetSelectList(....

标签: c# asp.net-mvc-4 enums


【解决方案1】:

在将模型传递到视图之前,尝试从控制器的 GET 方法中将 Model.CodeType 设置为所需的枚举。

【讨论】:

  • Model.CodeType 设置为 Enum CodeType 中的可枚举项之一,如果这有意义的话。我希望已经存储在 Model.CodeType 中的值成为 DropDownList 中的默认值
猜你喜欢
  • 2022-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多