it-roy-ru.com

Имя "Модель" не существует в текущем контексте ASP.NET MVC5

Я пишу плагин для NopCommerce 3.2, и в представлениях я получаю ошибку, упомянутую выше, но также для «Layout» и «Html». Я скопировал тот же Web.Config, который работает в другом плагине. Я также добавил те же ссылки, что и в рабочем плагине. Когда компиляция плагина работает, но у меня нет intellisense и я не могу поверить, что VisualStudio правильно помечает ошибки. Я использую VS2013 Professional Update 1.

Вот файл Web.Config:

<?xml version="1.0" encoding="utf-8"?>

<!-- We use this file to make razor intellisense work in the class library -->




<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation targetFramework="4.5" />
    <pages
    validateRequest="false"
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add Assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
      <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" />
      </namespaces>
    </pages>
  </system.web>
  <system.web.webPages.razor>
    <Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="Nop.Web.Framework.ViewEngines.Razor.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
</configuration>

Правка: Извините, если вы нашли этот вопрос не исследованным, но я уверяю вас, я потратил часы, чтобы попытаться найти решение (включая те вопросы, которые я нашел здесь, в stackoverflow, которые похожи и указав web.config как проблему, которая является причина, по которой я включил этот файл в свой вопрос), но не могу его найти.

8
hjd

Эта ошибка, вероятно, была вызвана Решарпером. Мы команда из трех разработчиков, использующих GIT. Один из нас установил Resharper, и это, вероятно, вызвало ошибку для двух других из нас. Когда мы установили пробную версию Resharper, она снова сработала. К сожалению, это не работает при повторном удалении Resharper ...

4
hjd

Попробуйте добавить этот раздел в system.web. (Убедитесь, что версии, которые я добавил, действительно те, которые вы используете)

<compilation targetFramework="4.5">
  <assemblies>
    <add Assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add Assembly="System.Web.Helpers, Version=2.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=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add Assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

Закройте .cshtml просмотр файлов. Перестройте проект. И открой их снова.

3
Marius Stănescu

Деинсталляция проекта MVC Nuget Package и переустановка его исправили это для меня. Мой был испорчен, когда я изменил .net версию проекта. 

3
netslaves

Убедитесь, что пространство имен, которое вы определили в представлении, совпадает с пространством имен вашей модели.

2
mariann

Если вы измените свойства своего проекта на целевой 4.5.1,

targetFramework во многих других местах все еще скажет 45

Вы можете найти targetFramework 3-4 раза в корневом каталоге web.config И во всех видах packages.config.

У меня была такая же проблема, измените Project на 4.5 и все прояснилось.

Лучше всего не нацеливаться на 4.5.1

2
user965445

Я столкнулся с той же ошибкой в ​​моем проекте MVC 5. В моем случае Web.config в папке Views не был опубликован каким-либо образом. Добавление его обратно решило проблему.

2
Stephen Zeng

У меня такая же проблема. Решением было удалить проект пакета MVC Nuget и переустановить его.

http://mhammadchehab.com/wordpress/2013/12/enabling-intellisense-for-razor-in-class-library-mvc-5-razor-3-0/

2
David

Измените Выход проекта путь на /bin для Все конфигурации в Свойства проекта . Это странно, но кажется, что когда VS Project Output помещается в /bin/Debug или /bin/Release, intellisense полностью отключается. 

project properties

2
SliverNinja - MSFT

В моем случае мне пришлось сбросить кэш компонента Visual Studio , закрыв Visual Studio и удалив эту папку:

C:\Users\[имя пользователя]\AppData\Local\Microsoft\VisualStudio\14,0\ComponentModelCache

1
Vojta Jemelka

У меня была та же ошибка, и я просто изменил На

Я просто пытаюсь получить cshtml intellisense в консольном приложении, поэтому мне удалось вернуться на стандартную базовую веб-страницу просмотра.

1
StewartArmbrecht