방명록
- [ERP 개발일지] 직원 정보 입력, 출력 그리고 에러2024년 12월 06일 18시 40분 49초에 업로드 된 글입니다.작성자: Devrun반응형
웹 개발을 하다 보면 가장 짜증 나는 부분이 에러가 표시가 안될 때가 있다. 이는 대부분 HTML 코드에서 생기는데 오늘도 이 부분을 개발하면서 문제가 발생했다.
에러명: 날짜가 0001-01-01로 표시되는 이유
ASP.NET Core에서는 asp-for라는 속성을 사용한다. 이는 name=""과 같은 속성인데 내 input에 asp-for와 name이 둘 다 들어있었다. ㅠㅠ 이를 1시간이나 걸려서 찾아내다니... DB 문제가 있는 줄 알았는데... 아니었다
늘 처음하는 것에서는 실수가 발생하는 법, 멘탈 잡고 다시 가즈아
직원 등록 부분 코드
public async Task<IActionResult> AddEmployee(EmployeeViewModel empvm) { if (ModelState.IsValid) { var emp = new Employee { Employee_Name = empvm.Employee_Name, Employee_Englisth_Name = empvm.Employee_English_Name, Employee_Phone = empvm.Employee_Phone, Employee_Email = empvm.Employee_Email, Employee_DateOfBirth = empvm.Employee_DateOfBirth, Employee_JoinDate = empvm.Employee_JoinDate, Employee_Sex = empvm.Employee_Sex, }; var edu = new EmployeeEducation { EducationStatus = empvm.EducationStatus, School_Name = empvm.School_Name, Employee = emp }; var addr = new EmployeeAddress { Unit = empvm.Unit, StreetName = empvm.StreetName, City = empvm.City, Province = empvm.Province, PostalCode = empvm.PostalCode, Employee = emp }; _context.Employees.Add(emp); _context.EmployeeEducation.Add(edu); _context.EmployeeAddresses.Add(addr); await _context.SaveChangesAsync(); return RedirectToAction("Index", "Employee"); } else { return View("ApplyEmployee", "Employee"); } }
ViewModel
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace ERP.Models { public class EmployeeViewModel { // Employee 기본 정보 public int Employee_ID { get; set; } [Required] public string Employee_Name { get; set; } [Phone] public string Employee_Phone { get; set; } [EmailAddress] public string Employee_Email { get; set; } [Display(Name = "Date of Birth")] public DateOnly Employee_DateOfBirth { get; set; } [Display(Name = "Join Date")] public DateOnly Employee_JoinDate { get; set; } public string Employee_Sex { get; set; } public string Employee_English_Name { get; set; } [Required] public string School_Name { get; set; } [Required] public string EducationStatus { get; set; } [Required] public string Unit { get; set; } // 동/호 [Required] public string StreetName { get; set; } // 도로명 [Required] public string City { get; set; } // 도시 [Required] public string Province { get; set; } // 도/시 [Required] public string PostalCode { get; set; } // 우편번호 } }
HTML에서 Form을 사용할 때 여러 가지에 Data Model에 접근이 어렵다. 그래서 Employee, EmployeeEducation, EmployeeAddress라는 기존 모델을 하나로 합친 EmployeeViewModel을 만들어서 진행했다.
ViewModel에서 데이터를 Model로 전송
var emp = new Employee { Employee_Name = empvm.Employee_Name, Employee_Englisth_Name = empvm.Employee_English_Name, Employee_Phone = empvm.Employee_Phone, Employee_Email = empvm.Employee_Email, Employee_DateOfBirth = empvm.Employee_DateOfBirth, Employee_JoinDate = empvm.Employee_JoinDate, Employee_Sex = empvm.Employee_Sex, }; var edu = new EmployeeEducation { EducationStatus = empvm.EducationStatus, School_Name = empvm.School_Name, Employee = emp }; var addr = new EmployeeAddress { Unit = empvm.Unit, StreetName = empvm.StreetName, City = empvm.City, Province = empvm.Province, PostalCode = empvm.PostalCode, Employee = emp };
바로 이 부분이 ViewModel에 데이터를 각 Model로 전송해 주는 역할을 한다.
이렇게 하면 서로 다른 Table에 데이터를 저장해야 할 때 유용하다. 아니 필수 일 것이다. ㅋㅋㅋ
관계형 데이터베이스를 쓴다면 무조건 적으로 테이블이 정규화되어 있는데, 이렇게 하지 않으면 애초에 데이터 입력이 어려울 수 있다. 아니면 수많은 버튼을 만들어야 할 것이다. (이는 만들어보면 안다.)
오늘도 기능, 커밋, 블로그 완료!
반응형'C# > 개발일지' 카테고리의 다른 글
[개인 홈페이지] 이력서용으로 사용할 홈페이지 제작 (0) 2024.12.10 [ERP 개발 일지] 직원 리스트 출력에서 정보 보기 (0) 2024.12.09 [ERP 개발 일지] 로그인 프로세스 (1) 2024.12.06 [FoodFlow] ERP 시스템 개발 기록 - 수정 및 리빌드 중 (1) 2024.12.04 식당 관리 프로그램 FoodFlow 개발 1일차 (1) 2024.12.02 다음글이 없습니다.이전글이 없습니다.댓글