All
Начало работы с ASP.NET MVC. Пока все хорошо, но этот чокнутый.
У меня есть модель представления, которая содержит словарь атрибутов для гиперссылки, используемый следующим образом:
меню = переменная модели
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), menu.Attributes, null)
Проблема в позиции «menu.Attributes» ожидает объект в виде:
new { Name = "Fred", Age=24 }
Из того, что я могу сказать, этот анонимный объект в любом случае фактически преобразуется в словарь с помощью отражения, НО в первую очередь вы не можете передать ему словарь !!!
HTML-код, сгенерированный для ссылки, просто показывает тип словаря.
Как же мне обойти это? Весь смысл в том, что его общее и контроллер может установить меню. Атрибуты ранее ....
Основываясь на посте ниже, я попробовал следующее:
Html.ActionLink(Html.Encode(menu.Name), Html.Encode(menu.Action), Html.Encode(menu.Controller), new RouteValueDictionary(menu.Attributes), new Dictionary<string,object>())
но это все еще не работает (я думаю, что код внутренне вызывает универсальный метод, который принимает объекты?). Выше (и мое оригинальное решение передачи словаря 4-му параметру дает 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>
т.е. он использует рефлексию и работает неправильно ...