工作日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);
}
变化
@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" />
这应该发送正确的值