[C#/ASP.NET MVC/.NETCORE] ControllerLinkGeneratorExtensions 클래스 : GetPathByAction 확장 메소드를 사용해 절대 경로를 갖는 URL 구하기
C#/ASP.NET MVC 2020. 10. 30. 20:35728x90
반응형
728x170
▶ Controllers/TestController.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Routing;
using Microsoft.Docs.Samples;
namespace TestProject.Controllers
{
/// <summary>
/// 테스트 컨트롤러
/// </summary>
public class TestController : Controller
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 링크 발생기
/// </summary>
private readonly LinkGenerator linkGenerator;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - TestController(linkGenerator)
/// <summary>
/// 생성자
/// </summary>
/// <param name="linkGenerator">링크 발생기</param>
public TestController(LinkGenerator linkGenerator)
{
this.linkGenerator = linkGenerator;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 인덱스 페이지 처리하기 - Index()
/// <summary>
/// 인덱스 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
public IActionResult Index()
{
string url = this.linkGenerator.GetPathByAction(HttpContext, null, null, new { id = 17, });
return Content(url);
}
#endregion
#region 구독 페이지 처리하기 - Subscribe(id)
/// <summary>
/// 구독 페이지 처리하기
/// </summary>
/// <param name="id">ID</param>
/// <returns>액션 결과</returns>
public IActionResult Subscribe(int id) => ControllerContext.MyDisplayRouteInfo(id);
#endregion
#region 작성 페이지 처리하기 - Write()
/// <summary>
/// 작성 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
public IActionResult Write()
{
string url = this.linkGenerator.GetPathByAction("Subscribe", "Home", new { id = 17 });
return Content(url);
}
#endregion
}
}
728x90
▶ Controllers/HomeController.cs
using Microsoft.AspNetCore.Mvc;
using Microsoft.Docs.Samples;
using Microsoft.Extensions.Logging;
using System.Diagnostics;
using TestProject.Models;
namespace TestProject.Controllers
{
/// <summary>
/// 홈 컨트롤러
/// </summary>
public class HomeController : Controller
{
//////////////////////////////////////////////////////////////////////////////////////////////////// Field
////////////////////////////////////////////////////////////////////////////////////////// Private
#region Field
/// <summary>
/// 로그 작업자
/// </summary>
private readonly ILogger<HomeController> logger;
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 생성자 - HomeController(logger)
/// <summary>
/// 생성자
/// </summary>
/// <param name="logger">로그 작업자</param>
public HomeController(ILogger<HomeController> logger)
{
this.logger = logger;
}
#endregion
//////////////////////////////////////////////////////////////////////////////////////////////////// Method
////////////////////////////////////////////////////////////////////////////////////////// Public
#region 인덱스 페이지 처리하기 - Index()
/// <summary>
/// 인덱스 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
public IActionResult Index()
{
return View();
}
#endregion
#region 프라이버시 페이지 처리하기 - Privacy()
/// <summary>
/// 프라이버시 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
public IActionResult Privacy()
{
return View();
}
#endregion
#region 에러 페이지 처리하기 - Error()
/// <summary>
/// 에러 페이지 처리하기
/// </summary>
/// <returns>액션 결과</returns>
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestID = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
#endregion
#region 구독 페이지 처리하기 - Subscribe(id)
/// <summary>
/// 구독 페이지 처리하기
/// </summary>
/// <param name="id">ID</param>
/// <returns>액션 결과</returns>
public IActionResult Subscribe(int id)
{
return ControllerContext.MyDisplayRouteInfo(id);
}
#endregion
}
}
728x90
반응형
그리드형(광고전용)
댓글을 달아 주세요