더북(TheBook)

2. DnnPagingHelperTagHelper 파일의 기본 제공 코드를 모두 지운 후 다음과 같이 긴 코드를 입력한다. 클래스 내에는 외부에 노출할 속성들과 실행할 때 태그를 만들어 낼 Process 메서드의 내용을 채운다.

▼  TagHelpers/DnnPagingHelperTagHelper.cs

using Microsoft.AspNetCore.Razor.TagHelpers;
using System;

namespace DotNetNote.TagHelpers
{
  /// <summary>
  /// 페이징 헬퍼(dnn-paging-helper)
  /// </summary>
  public class DnnPagingHelperTagHelper : TagHelper
  {
      /// <summary>
      /// 기본 리스트면 false, 검색 결과에 대한 페이징 리스트면 true
      /// </summary>
      public bool SearchMode { get; set; } = false;
      /// <summary>
      /// 검색할 필드: Name, Title, Content
      /// </summary>
      public string SearchField { get; set; }
      /// <summary>
      /// 검색할 내용
      /// </summary>
      public string SearchQuery { get; set; }
      
      /// <summary>
      /// 현재 보여줄 페이지 인덱스: 0, 1, 2
      /// </summary>
      public int PageIndex { get; set; } = 0;
      /// <summary>
      /// 총 페이지 개수
      /// </summary>
      public int PageCount { get; set; }
      /// <summary>
      /// 한 페이지에 보여줄 아티클 개수
      /// </summary>
      public int PageSize { get; set; } = 10;
      
      /// <summary>
      /// 페이징 헬퍼가 실행될 URL
      /// </summary>
      public string Url { get; set; }
      
      private int _RecordCount;
      /// <summary>
      /// 총 레코드 수
      /// </summary>
      public int RecordCount
      {
          get { return _RecordCount; }
          set
          {
              _RecordCount = value;
              PageCount = ((_RecordCount - 1) / PageSize) + 1; // 계산식
          }
      }
      
      public override void Process(
          TagHelperContext context, TagHelperOutput output)
      {
          output.TagName = “ul”;
          output.Attributes.Add(“class”, “pagination pagination-sm”);
          
          if (PageIndex == 0)
          {
              PageIndex = 1;
          }
          
          int i = 0;
          
          string strPage = ””;
          
          
          if (PageIndex > 10)
          {
              if (!SearchMode)
              {
                  strPage += “<li><a href=\“” + Url + ”?Page=”
                      + Convert.ToString(((PageIndex - 1) / (int)10)  10)
                      + “\”>◀</a></li>“;
              }
              else
              {
                  strPage += “<li><a href=\“” + Url + ”?Page=”
                      + Convert.ToString(((PageIndex - 1) / (int)10) 

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