Просмотры MVC3 не могут найти добавленный ссылочный класс - PullRequest
6 голосов
/ 07 марта 2011

По моему мнению, возникают проблемы с поиском класса, расположенного в одной из моих ссылок. Это ссылка на dll, построенную вне проекта.

Вид всегда выдает ошибку:

Не удалось найти тип или имя пространства имен «Компания» (вы отсутствует директива using или ссылка на сборку)

Вот контроллер. Там нет проблем.

using Company.Entities;

public ActionResult Find()
{
    Person test = Person.SelectByADDistinguishedName("L*", false);
    return View(test);
}

Вот вид. Ошибка возникает в строке @Model.

@model Company.Entities.Person

@{
    ViewBag.Title = "Bob";
}

<h2>Find</h2>

My Views / Web.config в настоящее время выглядит следующим образом

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="Company.Entities" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>

Я проверил похожие темы, подобные one , но безрезультатно.

Вот сообщение на экране

Line 25:     using System.Web.Mvc.Html;
Line 26:     using System.Web.Routing;
Line 27:     using Company.Entities;
Line 28:     
Line 29:     


Source File: c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET

Files \ корень \ 49c9c7db \ 1f9dd5c8 \ App_Web_find.cshtml.a8d08dba.xro6gxci.0.cs Линия: 27

Если я уберу упоминание о сборке (из web.config - без @using statments). При загрузке я получаю то же сообщение об ошибке, но против этой строки

public class _Page_Views_Home_Find_cshtml : System.Web.Mvc.WebViewPage<Company.Entities.Person> {

Ответы [ 3 ]

7 голосов
/ 07 марта 2011

Поработав с ним некоторое время, я решил его.

Мне пришлось добавить сборку в разделе сборок основного web.config (а не под представлениями)

Пример файла web.config.

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="Company, Version=2.0.31.0, Culture=neutral, PublicKeyToken=df9010405db60e6d"/>
  </assemblies>
</compilation>

Спасибо за людей, которые дали мне предложения.

4 голосов
/ 07 марта 2011

Не забудьте проверить каталог представлений на наличие дополнительного файла web.config.Кажется, я помню, столкнулся с подобной проблемой, потому что я не обновил правильный web.configYMMV.

2 голосов
/ 06 мая 2014

Добавление ссылки

до того, где вы используете свой элемент управления, в .cshtml файл работает. Пример:

@model IEnumerable<MyApp.Models.MyModel>
@using System.Web.UI.WebControls;

Но вы можете поместить его в web.config под тегом namespaces. Таким образом, это глобально для всех взглядов. Также нет необходимости указывать версию:

<namespaces>
        <add namespace="System.Web.UI.WebControls" />
</namespaces>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...