【问题标题】:MVC enum flags: Why is the first enum value always true?MVC 枚举标志:为什么第一个枚举值始终为真?
【发布时间】:2015-05-05 16:56:39
【问题描述】:

所以,我有一个标记的枚举:

 [Flags]
 public enum SiteVisibilityFlags : short
 {
     None = 0,
     Corporate = 1,
     Properties = 2,
     Kiosk = 4
 }

问题是,无论我设置什么,“无”总是正确的......无论如何。说我是这样设置的:

..., SiteVisibilityFlags = Enums.SiteVisibilityFlags.Corporate  ...

然后尝试查看:

<dd>
        @foreach (Enums.SiteVisibilityFlags svf in Enum.GetValues(typeof(Enums.SiteVisibilityFlags)))
        {
            @Html.CheckBox("SiteVisibilityFlags", (Model.SiteVisibilityFlags.HasFlag(svf)), new { value = svf, disabled = "disabled" })
            @Html.Label("SiteVisibilityFlagsLabel", svf.ToString())
            @:&nbsp;
        }
    </dd>

在这里,Model.SiteVisibilityFlags.HasFlag(svf) 对于“无”总是正确的,但不应该如此。在数据库中验证,值为'1'......但仍然检查无。我已经尝试了 Corporate、Properties 和 Kiosk 的单个和组合的每一种排列,复选框按预期工作,根据标志值检查和取消选中,但始终选中/true 'None'。

我错过了什么?

【问题讨论】:

标签: model-view-controller enums enum-flags


【解决方案1】:

根据this article 标记的枚举应该以“1”而不是“0”开头,因为它会导致问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多