첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ TagHelpers/MailAddressLinkTagHelper.cs

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

namespace TestProject.TagHelpers
{
    /// <summary>
    /// 메일 주소 링크 태그 헬퍼
    /// </summary>
    [HtmlTargetElement("el")]
    public class MailAddressLinkTagHelper : TagHelper
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 메일 서버
        /// </summary>
        private const string MAIL_SERVER = "daum.com";

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 비동기 처리하기 - ProcessAsync(context, output)

        /// <summary>
        /// 비동기 처리하기
        /// </summary>
        /// <param name="context">컨텍스트</param>
        /// <param name="output">출력</param>
        /// <returns>태스크</returns>
        public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "a";

            string sourceContent = (await output. GetChildContentAsync()).GetContent();

            string targetContent = $"{sourceContent}@{MAIL_SERVER}";

            output.Attributes.Add("href", $"mailto:{targetContent}");

            output.Content.SetContent(targetContent);
        }

        #endregion
    }
}

 

▶ Views/Test/Index.cshtml

@addTagHelper *, TestProject
@{ Layout = null; }
<p>TagHelper 클래스 : 메일 주소 링크를 생성하는 사용자 정의 태그 헬퍼 만들기</p>
<hr />
<el>charles</el>
<el>peter</el>
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요