더북(TheBook)

7. 이번에는 뷰 컴포넌트(View Component)라는 개념을 미리보기로 살펴보자. 프로젝트에 ViewComponents라는 폴더를 생성하고, 이곳에 DataListViewComponent.cs라는 클래스 파일을 만든다. 이 클래스 파일에 ViewComponent 클래스로부터 상속 받는 코드를 작성한다. 조금 복잡해 보일 수 있으나, 특정 이름에 해당하는 데이터를 받아 뷰 컴포넌트 전용 뷰 페이지에 전송해서 사용하게 하는 코드다. 뷰 컴포넌트는 이번 실습에서 미리보기로 한 번 만들어 보고, 뒤에서 더 자세히 다루겠다.

▼  ViewComponents/DataListViewComponent.cs

using DotNetNote.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace DotNetNote.ViewComponents
{
  public class DataListViewComponent : ViewComponent
  {
      public async Task<IViewComponentResult> InvokeAsync(string name)
      {
          var data = await GetByNameAsync(name);
          return View(data);
      }
      
      private Task<IEnumerable<Data>> GetByNameAsync(string name)
      {
          return Task.FromResult(GetByName(name));
      }
      
      private IEnumerable<Data> GetByName(string name)
      {
          DataService service = new DataService();
          return service.GetDataByName(name);
      }
  }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.