Phantom Programming 팬텀 프로그래밍
  • [EmployeeManager] 직원 리스트를 뽑아보자
    2024년 12월 13일 00시 15분 54초에 업로드 된 글입니다.
    작성자: Devrun
    반응형

     

    사진과 같이 직원 리스트를 뽑아보았다. 이번에도 Partial을 사용해서 데이터를 뽑았다.

     

    @model Employee.Models.EmployeeViewModel
    
    <div>
        <h1>Employee List</h1>
        <table class="table">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Name</th>
                    <th>Email</th>
                    <th>Phone</th>
                    <th>관리</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var employee in Model.Employees)
                {
                    <tr>
                        <td>@employee.Employee_ID</td>
                        <td>@employee.Employee_Name</td>
                        <td>@employee.Employee_Email</td>
                        <td>@employee.Employee_Phone</td>
                        <td>
                            <a href="#" class="btn btn-info btn-sm">
                                상세보기
                            </a>
    
                            <a href="#" class="btn btn-warning btn-sm">
                                수정하기
                            </a>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
    </div>

    이 뷰가 Partial View로 사용될 레이아웃이다.

    아직 버튼 구현을 하지는 않았지만, 며칠 내로 만들 계획이다.

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    
    namespace Employee.Models
    {
        public class EmployeeViewModel
        {
            [Required]
            public string Employee_Name { get; set; }
    
            [Required]
            public DateTime Employee_BirthDate { get; set; }
    
            [Required]
            public string Employee_Phone { get; set; }
    
            [Required]
            public string Employee_Email { get; set; }
    
            [Required]
            public string Address_Unit { get; set; }
    
            [Required]
            public string Address_Street { get; set; }
    
            [Required]
            public string Address_City { get; set; }
    
            [Required]
            public string Address_Region { get; set; }
    
            [Required]
            public string Address_PostalCode { get; set; }
    
            [Required]
            public string Education_Status { get; set; }
    
            [Required]
            public string Education_School { get; set; }
    
            [Required]
            public string Education_Major { get; set; }
    
            [Required]
            public DateTime StartDate { get; set; }
    
            [Required]
            public DateTime EndDate { get; set; }
    
            [Required]
            public string CompanyName { get; set; }
    
            [Required]
            public string Department { get; set; }
    
            [Required]
            public string JobTitle { get; set; }
    
            public List<EmployeeModel> Employees { get; set; }
        }
    }

     

    기존에 사용하던 ViewModel인데 이를 통해 데이터를 입력했었다. 그러나 이걸 통해 데이터를 받아와야 하기 때문에 List로 EmployeeModel을 받아오는 모델 객체를 하나 더 생성했다.

     

    사실 처음에는 ViewModel을 안쓰고 받아오려고 했다. 하지만 에러가 발생해서 ViewModel을 사용했다.

            public IActionResult Index()
            {
    
                var employees = _context.Employees
                    .Include(e => e.AddressModel)
                    .Include(e => e.EducationModel)
                    .Include(e => e.CareerModell)
                    .ToList();
    
                var viewModel = new EmployeeViewModel
                {
                    Employees = employees 
                };
    
                return View(viewModel);
            }

    기존 Idex() 함수는 return View();만 있었지만. 데이터를 받아와야 하기 때문에, 데이터를 받아올 항복을 추가해 주었다.

     

    var employees를 생성하고, _context를 통해서 Db에서 Employees 데이터를 받아온다. 여기에 주소와 교육 그리고 경력을 추가로 가져오게 했다. 이를 viewModel로 전송해서 EmployeeViewModel에 만들어둔 리스트로 전달한다. 그 후에 최종적으로 index에서 뷰로 전달해서 데이터를 출력한다.

     

    휴 오늘 하루도 하나의 기능을 완성했다.

    반응형
    댓글