2012-05-08 3 views
5

이 버그가 발생하기를 바라지 만 나만의 문제 일 것 같았습니다.MVC 4 ActionLink Dictionary htmlAttributes가 작동하지 않습니다.

@Html.ActionLink("Test", "Test", "Test", 
    new { id = 1 }, 
    new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } }) 

이렇게해도 작동하지만 추가 속성을 추가하려면 수동으로해야합니다.

@Html.ActionLink("Test", "Test", "Test", 
    new { id = 1 }, 
    new { @class="ui-btn-test", data_icon="gear", data_new_attr="someextra" }) 

첫 번째 기능은 더 이상 작동하지 않으며 작동하려면이 기능이 필요합니다. 두 번째는 작동하지만 상관하지 않습니다. 왜냐하면 더 많은 특성을 추가하려고하기 때문에 객체가 다르게 말해지지 않는 한 작동하지 않습니다.

+0

무엇이 질문입니까? 두 번째 방법은'htmlAttributes'를 지정하는 선호되는 방법입니다. –

+0

MVC 4에서 선호하는 첫 번째 방법이 올바르게 작동하지 않습니다. 나는 속성과 같은 것을 얻는다. Home

+0

왜 첫 번째 방법을 원하십니까? 두 번째 방법은 작동하고, 수락 된 연습이며, 읽기 쉽습니다. –

답변

8

제공되는 ActionLink 도우미 메서드 중 아무 것도 지정한 매개 변수를 수락하지 않습니다. html 속성에 IDictionary 유형의 매개 변수를 사용하는 유일한 메소드는 경로 값에 대해 RouteValueDictionary를 예상합니다. 그러나 너희는 현재 익명 객체

로 사전을 치료하는 기능이

@Html.ActionLink("Test", "Tesz", "Test", 
new RouteValueDictionary(new {id = 1}), 
new Dictionary<string, object> { { "class", "ui-btn-test" }, { "data-icon", "gear" } }) 

을 시도하거나 자신의 확장 메서드를 구현 전화하는거야.

+0

그게 잘됐다! 내 확장 메서드를 구현하려고했지만 모든 액션 링크를 다시 작성하고 싶지 않았습니다. –

관련 문제