如何遍历标志的枚举并创建为每个值进行适当检查的复选框?

Keh*_*mme 2 c# asp.net-mvc enums flags razor

我有Enum一些标志代表一周的日子,有一些额外的值表示工作日,周末,每天或没有日子.

这是Enum:

[Flags]
public enum DayOfWeek : short
{
    Sunday = 1,
    Monday = 2,
    Tuesday = 4,
    Wednesday = 8,
    Thursday = 16,
    Friday = 32,
    Saturday = 64,
    Weekday = 62,
    Weekend = 65,
    Everyday = 127,
    None = 0
}
Run Code Online (Sandbox Code Playgroud)

我还有一个带有属性的View Model,DayOfWeek其类型为DayOfWeek.

在我的视图中,我需要为一周中的每一天创建一个复选框,并根据保存的日期以某种方式适当地检查框.

我怎样才能做到这一点?

Keh*_*mme 6

我找到了一个好的解决方案

这是我想出的:

@foreach (DayOfWeek item in Enum.GetValues(typeof(DayOfWeek)))
{
    if (0 < item && (item <= DayOfWeek.Friday || item == DayOfWeek.Saturday))
    {
        @Html.Label("DayOfWeek", item.ToString())
        @Html.CheckBox("DayOfWeek", (Model.DayOfWeek.HasFlag(item)), new { value = item })
    }
}
Run Code Online (Sandbox Code Playgroud)

循环中的条件语句是确保仅显示实际天数.

这适用于我的目的,并且该概念可以轻松应用于其他枚举.具体实施需要一些改变,但你明白了.