일반적으로 ASP.NET 뷰에서 다음 함수를 사용하여 URL이 아닌 URL을 얻을 수 있습니다 <a>
.
Url.Action("Action", "Controller");
그러나 사용자 정의 HTML 도우미에서 방법을 찾을 수 없습니다. 나는 가지고있다
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
}
}
헬퍼 변수에는 Action 및 GenerateLink 메소드가 있지만의 메소드를 생성합니다 <a>
. ASP.NET MVC 소스 코드에서 파고 들었지만 간단한 방법을 찾을 수 없었습니다.
문제는 위의 Url이 뷰 클래스의 멤버이며 인스턴스화를 위해서는 컨텍스트와 경로 맵이 필요하다는 것입니다 (처리하고 싶지 않으며 어쨌든 안됩니다). 또는 HtmlHelper 클래스의 인스턴스에는 Url 인스턴스의 컨텍스트 정보 하위 집합 인 저녁 컨텍스트도 있습니다 (다시 처리하고 싶지는 않습니다).
요약하면, 가능하다고 생각하지만 내가 볼 수있는 모든 방법에는 다소 내부 ASP.NET 항목으로 조작하는 것이 포함되어 있기 때문에 더 좋은 방법이 있는지 궁금합니다.
편집 : 예를 들어, 내가 볼 수있는 한 가지 가능성은 다음과 같습니다.
public class MyCustomHelper
{
public static string ExtensionMethod(this HtmlHelper helper)
{
UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
urlHelper.Action("Action", "Controller");
}
}
그러나 옳지 않은 것 같습니다. UrlHelper 인스턴스를 직접 다루고 싶지 않습니다. 더 쉬운 방법이 있어야합니다.