我正在尝试建立一个员工考勤表。
这是我的AttendanceModel
public class AttendanceModel
{
//Primary Key and auto-generated field for this model
public int AttendanceID { get; set; }
public DateTime AttendanceDate { get; set; }
//Present/Absent status
public bool Status { get; set;}
//Primary key of Employee Model
public int EmployeeID { get; set; }
//Reference to Employee Model
public Employee Employee { get; set; }
}
现在我想让这个模型制作一个View
包含employeeId(Hidden field)
、员工姓名和出勤复选框。
我的问题是(第 3 天编辑)
- 我是否必须为此视图使用不同的 ViewModel
- 如何将信息从
view
实体插入并最终插入数据库,因为它需要在数据库中插入多行(即批处理) - 我也没有得到如何从视图中检索信息以进行处理
任何建议都是可观的。:)
提前致谢!!!
*编辑(我尝试过的) *
1. 我创建了另一个类,其中包含除对模型类的引用之外的AttendanceViewModel
所有字段。然后在我渲染它。在控制器中,参数是并从中填充出勤模型。这是代码。 AttendanceModel
Employee
view
IEnumerable<AttendanceViewModel>
public ActionResult Index()
{
var EmployeeAttendance = from s in new EmployeeDBContext().Employees
select new AttendanceViewModel
{
EmployeeID = s.EmployeeID
};
return View(EmployeeAttendance.ToList());
}
保存记录的控制器动作是
[HttpPost]
public ActionResult SaveAttendance(IEnumerable<AttendanceViewModel> attendancess) // argument of SaveAttendance is always `null`
{
if (ModelState.IsValid)
{
var _context = new EmployeeDBContext();
foreach (var a in attendancess)
{
var newAttendance = new AttendanceModel
{
EmployeeID = a.EmployeeID,
AttendanceStatus = a.Status
};
_context.Attendance.Add(newAttendance);
}
_context.SaveChanges();
}
//Rest of code
但它不起作用的论点总是null
:(