하나의 솔루션 당신이 다음 도우미 메서드에 전달할 수있는 모든 정보가 들어있는 래퍼 클래스 만드는 것입니다 :
public class RouteWrapper
{
public string RouteName { get; set; }
public object RouteValues { get; set; }
public string LinkText { get; set; }
/* Other Properties pertaining to your data */
}
을 당신이 RouteName을 정의하는 방법이있을 것 래퍼 내를, 및 RouteValues 속성 컨트롤러와 액션을 다르게 설정해야한다면, 그렇게 설정할 수 있습니다. RouteValues에 컨트롤러와 동작을 전달하고 RouteName으로 "Default"를 지정할 수도 있습니다.
그러면 정말 당신이보기에 straigt를 필요로 무엇을 할 수있을 것이라고합니다 (RouteWrapper 클래스를 가정 모델입니다, 구문은 약간 떨어져있을 수 있지만, 당신은 아이디어가 생각 날 것이다) :
<%= Html.RouteLink(Model.LinkText, Model.RouteName, Model.RouteValues) %>
희망 이것은 도움이됩니다.
편집 :
그냥 다시 읽고 너를 도우미를 사용하지 않는 것을 보았습니다.
앵커 태그를 생성 할 때마다 내부 HTML에 LinkText 속성을 사용할 수 있으며 경로 이름과 경로 값을 기반으로 URL을 생성하는 데 도움이되는 Routing 클래스에 메서드가 있습니다. 일단 코드가 어떻게 될지 알아 내면 약간의 코드를 게시 할 것입니다. 다시
편집 : 나는 시도 할 것이다 무엇
public string GenerateAnchorTag(ViewContext context, RouteWrapper model)
{
string url = RouteTable.Routes.GetVirtualPath(context, model.RouteName, new RouteValueDictionary(model.RouteValues));
return String.Format("<a href=\"{0}\">{1}</a>", url, model.LinkText);
}
가 (당신이 System.Web.Routing 어쩌면을 포함해야합니다
확인, 그래서 이것은 앵커 태그를 생성하는 일반적인 방법이 될 것입니다 System.Web.Mvc). 컨텍스트의 경우 요청 컨텍스트를 어떻게 든 잡아야합니다. 헬퍼 변수가 이미 전달할 수있는 컨텍스트를 가지고 있으므로 헬퍼 확장에서이 작업을 수행하고 있습니다. 헬퍼를 사용하지 않는다면 메소드에 RequestContext를 전달하는 가장 좋은 방법을 찾아야 할 것입니다.
여기에 동적으로 생성 된 뷰 코드를 게시 할 수 있습니까? –
아직 양식을 생성하는 동적 부분을 코딩하지 않았습니다. – PositiveGuy
그게 내가 내 머리에 맞고있어, 내 사용자 정의 컨트롤에서 HTML 헬퍼를 사용하지 않고 TagBuilder를 사용하지만 지금은 내가 컨트롤러/동작을 직선으로 동적으로 가리키는 하이퍼 링크를 어떻게 만들지 알아 내려고 노력하고있다. 똑바로 을 사용하여 동적으로 생성 된 Html.ActionLink 대신 동적으로 렌더링 할 수없는 HTML 마크 업과이 하이퍼 링크를 사용자 정의 컨트롤에서보기로 동적으로 렌더링 할 때 아무런 이유가 없습니다. . – PositiveGuy