MVC枚举标志:为什么第一个枚举值始终为真?

时间:2015-05-05 16:56:39

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

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

 [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>

这里,对于'None',Model.SiteVisibilityFlags.HasFlag(svf)始终为true,它不应该是。在db中验证,值为'1'...但仍然检查无。我已经尝试了单个以及公司,属性和Kiosk组合的每个排列,复选框按预期工作,根据标志值检查和取消选中,但“无”始终检查/为真。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

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