0

従業員出席シートを作成しようとしています。
これが私の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私の問題は(3日目に編集)ですemployeeId(Hidden field)

  1. このビューに別のViewModelを使用する必要がありますか
  2. viewデータベースに複数の行を挿入する必要があるため、エンティティに、そして最終的にはデータベースに情報を挿入する方法(つまり、バッチ処理)
  3. ビューから情報を取得して処理する方法もわかりません

どんな提案も認められます。:)
よろしくお願いします!!!
*編集(私が試したこと)* 1 .モデルクラスへの参照を除くAttendanceViewModelすべてのフィールドを含む 別のクラスを作成しました。それから私はそれをレンダリングします。コントローラでは、引数はであり、そこから出席モデルに入力されます。これがコードです。 AttendanceModelEmployeeviewIEnumerable<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:(

4

1 に答える 1

1

ビューからコントローラーに追加情報を送信する場合は、employeeIdなどの非表示の入力フィールドに値を設定する必要があります。または、Sessionオブジェクトに追加して、追加のプロパティをサイドメモリに保存することもできます。

List<int> CheckedEmpIdsViewModelのプロパティを使用する必要があります。ビューでは、employeeIdの値をチェックボックスの値に設定します。

<input type="checkbox" name="CheckedEmpIds" value="@Model.Employee.Id" />

フォームを送信すると、チェック済みの従業員IDを実際に使用できます。

于 2012-04-19T06:36:46.883 に答える