C# 如何遍历标志枚举并创建针对每个值适当选中的复选框?

C# 如何遍历标志枚举并创建针对每个值适当选中的复选框?,c#,asp.net-mvc,razor,enums,flags,C#,Asp.net Mvc,Razor,Enums,Flags,我有一个Enum标志来表示一周中的几天,还有一些额外的值表示工作日、周末、每天或没有几天 这是枚举: [Flags] public enum DayOfWeek : short { Sunday = 1, Monday = 2, Tuesday = 4, Wednesday = 8, Thursday = 16, Friday = 32, Saturday = 64, Weekday = 62, Weekend = 65,

我有一个
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
}
我还有一个视图模型,其属性为
DayOfWeek
,类型为
DayOfWeek

在我看来,我需要为一周中的每一天创建一个复选框,并根据保存的天数适当地选中这些复选框


如何执行此操作?

您可以像这样迭代您的
Enum

foreach (var val in typeof(DayOfWeek).GetEnumNames())
               ....
您还可以
par
并将
字符串
转换回您的
枚举

var day = Enum.Parse(typeof(DayOfWeek) , yourString);
您的字符串
可以是您想要的任何内容,例如
复选框的名称


我对您的问题和项目体系结构了解不多,您需要根据自己的问题调整这些选项。我希望这会有所帮助。

这是一个相当手动的过程。。。要检查是否选择了星期日,例如:

bool isSunday = (dayOfWeekEnum & DayOfWeek.Sunday) == DayOfWeek.Sunday;

我找到了一个好办法

以下是我的想法:

@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 })
    }
}
@foreach(Enum.GetValues中的DayOfWeek项(typeof(DayOfWeek)))
{

如果(0)