0

だから、私はフラグ付きの列挙型を持っています:

 [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) は「None」に対して常に true であり、そうであってはなりません。データベースで検証され、値は「1」です...しかし、なしはまだチェックされています。Corporate、Properties、および Kiosk の単一および組み合わせのすべての順列を試してみました。

私は何が欠けていますか?

4

1 に答える 1

1

この記事によると、問題が発生するため、フラグ付き列挙型は「0」ではなく「1」で開始する必要があります。

于 2015-05-11T16:51:05.450 に答える