工作日enum的MVC显示复选框

本文关键字:显示 复选框 MVC enum 工作日 | 更新日期: 2023-09-27 18:07:13

我有一个enum:

[Flags]
public enum DayOfWeekEnum
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    All = 31
}

和我想显示它在asp.net mvc应用程序的复选框列表的形式。

我找到了这个代码:

@foreach (DayOfWeekEnum item in Enum.GetValues(typeof(DayOfWeekEnum)))
        {
            if (item > 0 && item <= DayOfWeekEnum.Friday)
            {
                @Html.Label("DayOfWeekEnum", item.ToString())
                @Html.CheckBox("DayOfWeekEnum", (Model.Availability.HasFlag(item)),
                    new {value = item})
            }
        }

但是,它不会将值发送回控制器。

模型如下:

public class Teacher
{
    public int Id { get; set; }
    public User User { get; set; }
    public Level Level { get; set; }
    public DayOfWeekEnum Availability { get; set; }
}

控制器是这样的:

    [HttpPost] 
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "id,User,Level,Availability")] Teacher
        teacher)
    {
        if (ModelState.IsValid)
        {
            serviceClient.AddTeacher(teacher);
            return RedirectToAction("Index");
        }
        return View(teacher);
    }

工作日enum的MVC显示复选框

变化

@Html.CheckBox("DayOfWeekEnum", (Model.Availability.HasFlag(item)), new {value = item})

:

@Html.CheckBox("DayOfWeekEnum", (Model.Availability.HasFlag(item)), new {value = (int)item})

它应该更新你的源代码:

<label for="DayOfWeekEnum">Monday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="Monday" />
<label for="DayOfWeekEnum">Tuesday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="Tuesday" />
<label for="DayOfWeekEnum">Wednesday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="Wednesday" />
<label for="DayOfWeekEnum">Thursday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="Thursday" />
<label for="DayOfWeekEnum">Friday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="Friday" />

:

<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="1" />
<label for="DayOfWeekEnum">Tuesday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="2" />
<label for="DayOfWeekEnum">Wednesday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="4" />
<label for="DayOfWeekEnum">Thursday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="8" />
<label for="DayOfWeekEnum">Friday</label>
<input id="DayOfWeekEnum" name="DayOfWeekEnum" type="checkbox" value="16" />

这应该发送正确的值