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);
}
}
}