Я пытаюсь реорганизовать решение, которое включает 2 проекта MVC: проект "User-Experience" и соответствующий проект "Система управления контентом"
Я установил независимую библиотеку C # - "Сервисы""- проект в одном пространстве решений, чтобы сделать много вещей.Я хочу поделиться методами расширения Html, используемыми обоими веб-проектами, поместив их в этот «нейтральный» проект, чтобы не было никаких зависимостей между двумя проектами MVC.
У меня проблема с использованием объекта RouteValueDictionary (to.MergeAttributes) в этой библиотеке классов.Я включил ссылку на Sytem.Web.Routing в проекте Services, но когда я пытаюсь включить оператор using в начале файла вспомогательного класса, VStudio отказывается распознавать объявление («Не удается разрешить символ« Маршрутизация »).«).
Это имеет интуитивный смысл - только веб-проект, который может участвовать в маршрутизации URL, должен нуждаться в RouteValueDictionary.
Но, как представляется, обычно используется объект RouteValueDictionary внутри классов htmlhelper, поскольку он может взять анонимный объект, состоящий из пар имя-значение, и преобразовать его в словарь в своем конструкторе следующим образом:
tag.MergeAttributes(new RouteValueDictionary(htmlAttributes));
... тем самым обеспечивая способ передачи любого количества пар имя-значение атрибута тега в тег и относительно простой синтаксис для вызова помощника в представлении:
<%:Html.SomeTag(Model.Id, new {@class = "myClass", title = "myTitle"} %>
Так что, если я могуне использую RouteValueDictionary в моем классе помощника, я вынужден использовать более громоздкий синтаксис для моих представлений, например:
<%:Html.SomeTag(Model.Id, new Dictionary<string, string>{ {"class", "myClass"}, {"title", "myTitle} }%>
ВОПРОС: Итак, есть ли способ переписать класс помощникаполучить более простой синтаксис представления без использования RouteValueDictionary, или есть способ разрешить использование RouteValueDictionary в проекте библиотеки C #?