모두,ActionLink에 대한 routeValues 사전을 패스
ASP.NET MVC로 그립하기. 지금까지는 그렇게 좋았지 만, 이건 좀 이상하지. "menu.Attributes"의 위치를
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), menu.Attributes, null)
문제 변수
메뉴 = 모델 기대한다됩니다 :
나는 다음과 같이 사용하는 하이퍼 링크의 속성 사전을 포함하는 뷰 모델을 가지고 형태의 객체 : 내가 말할 수있는,이 익명의 객체가 실제로 어쨌든 반사를 통해 사전에 변환됩니다하지만 당신이 dictio를 전달할 수 없습니다에서
new { Name = "Fred", Age=24 }
처음부터 그것에 nary!
링크 용으로 생성 된 HTML은 사전 형식을 표시합니다.
나는 어떻게 이것을합니까? 요점은 자사의 일반적이며, 컨트롤러는 I 아래 게시물에 기반
다음과 같은 시도 .... 이전에 menu.Attributes를 설정 할 수 있습니다Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), new RouteValueDictionary(menu.Attributes), new Dictionary<string,object>())
하지만 여전히 작동하지 않습니다 (코드는 내부적으로 객체를 취하는 일반 메소드를 호출한다고 생각합니다.) 위의 (그리고 4 paramater에 사전을 전달하는 내 원래의 솔루션이에 HTML 비슷한 생산 : 시스템에서
<a href="/EditRole?Comparer=System.Collections.Generic.GenericEqualityComparer%601%5BSystem.String%5D&Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.String%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.String%5D">EditDocumentRoles</a>
이 반사를 사용하여 완전히 잘못된 일을 일하고, 즉 ...
안녕하세요. 감사합니다.하지만이 방법은 작동하지 않습니다. 좀 더 정보 – Graham
menu.Attributes 란 원래 업데이트? 그것은 사전의 속성을 끌어와 라우팅 매개 변수로 사용하고, 그 이유는 그 오류가 발생합니다. –
menu.Attributes 자체는 IDictionary입니다. 리플렉션을 사용하여 사전의 속성에 액세스하고 잘못 가져 오는 것임을 알고 있습니다. 개정 내가 즉, 위에서 만든 이유 나는하지 않습니다. 당신이 제안한 사전에서 routevalue를 만드는 것은 여전히 반사 비트를 올바르지 않게 얻습니다. 라우트 값 사전 –
Graham