【问题标题】:EnumDropDownListFor when one of the Enum values is 0?EnumDropDownListFor 当 Enum 值之一为 0 时?
【发布时间】:2017-04-06 10:49:12
【问题描述】:

我正在使用 ASP.NET MVC 应用程序。我正在使用的数据库是旧数据库。

在我的代码中,我有一个如下所示的枚举:

public enum Fruit
{
    Apple = -1,
    None = 0,
    Orange = 1
}

我无法更改它,当我尝试在我的 Razor 视图中执行此操作时:

@Html.EnumDropDownListFor(m => m.Fruit, "Select a fruit", new { @class = "form-control" })

视图加载时总是选择 None,当我希望它加载时 Select a fruit

实现这一目标的最简洁方法是什么?我可以用 JavaScript 破解它,但有更好的方法吗?

【问题讨论】:

  • 模型属性是否可以为空?即:public Fruit? Fruit { get; set; }
  • 不,但我可以做到,我试过了,但仍然没有成功
  • nullable 应该可以工作,也许你在将其更改为 nullable 时没有构建
  • 我进行了调试,它以0 开头,即使我有Fruit? Fruit。我是否需要明确告诉它它的值应该是null,比如mentioned here
  • 那是我测试过的,它选择 Select a fruit as default in nullable

标签: asp.net-mvc


【解决方案1】:

我能够通过在我的视图模型中使 Fruit Enum 为空来获得选择的默认文本:

public class FruitContainer
{
    public Fruit? Fruit;
}

在视图中:

@ModelType FruitContainer
@Html.EnumDropDownListFor(m => m.Fruit, "Select a fruit", new { @class = "form-control" })

如果下拉列表仍然没有选择默认文本,您可以确保从控制器传递给视图的任何模型确实将其 Fruit 属性设置为 null。

【讨论】:

    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2020-08-14
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多