Добавление ссылки на представление в 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 в эту сборку, в каком местоположении вы ее добавили?