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

标签 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,
    Everyday = 127,
    None = 0
}

我还有一个 View 模型,其属性 DayOfWeek 类型为 DayOfWeek

在我看来,我需要为一周中的每一天创建一个复选框,并根据已保存的日期以某种方式适本地选中复选框。

我该怎么做?

最佳答案

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

这是我想出的:

@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 })
    }
}

循环中的条件语句是为了确保只显示实际的天数。

这适用于我的目的,并且这个概念可以很容易地应用于其他枚举。具体实现将需要一些更改,但您明白了。

关于c# - 如何遍历标志枚举并创建针对每个值进行适当检查的复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19056547/

相关文章:

c# - 减去 2 个日期时间字段以获得剩余天数

c# - Stream.ReadAsync 和 Stream.WriteAsync 是否应该在返回之前或操作完成之后同步更改光标位置?

c# - 我想知道如何将值传递给另一个 View 并在单击 asp.net mvc 中的更新按钮时更新我的​​详细信息

c# - 对象 'PK_AspNetUserTokens' 依赖于列 'Name' 。 ALTER TABLE ALTER COLUMN Name 失败,因为一个或多个对象访问此列

asp.net-mvc-3 - 带有 MVC 3 的 Knockout javascript 库的主要优点是什么

asp.net-mvc-3 - 对于同一型号,我可以从 "shared"编辑器模板中调用 "areas"编辑器模板吗?

c# - 如何阻止 PDA 休眠

c# - 如何解决 Entity Framework 提供程序异常

c# - 从时区转换后将日期格式更改为 dd/MM/yyyy

asp.net-mvc-3 - 使用 Razor 语法的嵌套母版页