2013-01-18 3 views
1

actionlink를 오버로드하고 단순히 "route"값에 새 매개 변수를 추가하는 기능이 있습니다.이 매개 변수는 모든 곳에서 사용하고 있습니다. 당신이 볼 수 있듯이, 나는 사전으로 변환 내 ID를 추가 routeValues ​​전달MVC 및 htmlAttributes에서 ActionLink 오버로드

public static MvcHtmlString ReportActionLink(this HtmlHelper helper, string linkText, string actionName, string controllerName, object routeValues, object htmlAttributes) 
{ 
    RouteValueDictionary routeValueDictionary = new RouteValueDictionary(routeValues); 
    routeValueDictionary.Add("id", HttpContext.Current.Request.RequestContext.RouteData.Values["id"]); 

    IDictionary<string, object> attrs = new RouteValueDictionary(htmlAttributes); 

    return helper.ActionLink(linkText, actionName, controllerName, routeValueDictionary, attrs);   
} 

:

여기에 지금까지 내 코드입니다.

오버로드 방법은 즉, 내 속성에서 밑줄을 대체하지 않습니다

data_event = "뭔가"데이터 이벤트가되지 않는 것으로 예상하고 있기 때문에 나는 내 htmlAttributes을 변환 IDictionary 때 문제가 발생 = "무언가"는 익명의 유형과 같습니다. 밑줄로 렌더링됩니다. 나는 이것이 왜이고 그것을 개조 할 방법이 없는지 궁금합니다.

+0

ReportActionLink 예제 호출을 추가 할 수 있습니까? –

답변

4

제공된 RouteValueDictionary 생성자를 사용하는 대신 htmlAttributes 개체를 HtmlHelper.AnonymousObjectToHtmlAttributes 통해 전달하면됩니다. MSDN에서

:

반환 값
유형 : System.Web.Routing.RouteValueDictionary
html로 하이픈으로 대체 밑줄 문자 속성.

+0

고마워, 나는 그것을 테스트하고 완벽하게 작동 – user1854458

+0

그것은 당신을 위해 일한 경우 답변을 허용으로 표시하는 것을 잊지 마세요. –

+0

감사합니다. 이것은 내가 찾고 있었던 것이었다. – mcottingham