Добавление ссылки на представление в ASP.NET MVC
Я добавляю ссылку на библиотеку управления из Infragistics для использования своих элементов управления в своих представлениях ASP.NET MVC 3 Razor. Я уже добавил dll в качестве ссылки на проект.
![reference]()
![reference properties]()
Мои контроллеры могут получить доступ к пространству имен, если я добавлю using Infragistics.Web.Mvc
в начало файла.
Существует два способа показать представлениям пространство имен. Во-первых, введите @using Infragistics.Web.Mvc
в верхней части вашего представления. Однако, если я попробую это, я получаю следующую ошибку:
Тип или имя пространства имен "Инфрагистика" не удалось найти (вы отсутствует директива using или ссылка на сборку?)
Во-вторых, добавить вызов в пространство имен в части страниц вида Web.config следующим образом:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ABCABCABCABCABC" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
Other namespaces...
<add namespace="Infragistics.Web.Mvc"/>
</namespaces>
</pages>
</system.web.webPages.razor>
однако это тоже не работает.
Единственный способ заставить его работать - добавить следующую строку в корневой файл Web.config:
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
...
<add assembly="Infragistics.Web.Mvc, Version=3.11.1.2010, Culture=neutral, PublicKeyToken=blahblahblah" />
</assemblies>
</compilation>
В ходе дальнейшего исследования, касающегося Web.config, я обнаружил, что включив эту строку, он сообщает компилятору использовать этот ресурс при компиляции Ресурсы ASP.NET. Мне пришлось использовать SN.exe, чтобы найти PublicKeyToken.
Что я делаю неправильно?
Ответы
Ответ 1
Я не уверен, как работает установка Infragistics или как вы используете свой веб-сайт, но вам может потребоваться сообщить Visual Studio, чтобы скопировать DLL на сборку, чтобы она включалась в веб-проект. Это стоит проверить, прежде чем исследовать слишком много других вариантов.
Вот пример
![enter image description here]()
Ответ 2
Глядя на ваш код, похоже, что вы не ввели в web.config следующее:
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
...
<add namespace="Infragistics.Web.Mvc" />
</namespaces>
</pages>
Это говорит вашему viewengine (бритве или другим) использовать также dll infragistics в качестве расширения.
Если вы используете Razor, посмотрите также тег "namespace" внутри View\web.config. Вы можете указать пространство имен там, если хотите.
Надеюсь, что это поможет
Ответ 3
К сожалению, у вас здесь что-то странное, так как шаги простого добавления ref и включая пространство имен достаточно, чтобы заставить это работать.
В моих приложениях у меня нет записи в элементе сборки в файле web.config и только @using (например, MVC grid @using MvcContrib.UI.Grid), и все работает отлично. Я знаю, что это не помогает в решении проблемы, но, по крайней мере, вы знаете, что это должно быть так.
Вам также не нужна точка с запятой после вашего оператора.
Когда вы добавили ref в эту сборку, в каком местоположении вы ее добавили?