2013-08-02 3 views
1

У меня возникла проблема с представлениями mvc на нашем веб-сайте, где представление, похоже, не обнаруживает тип модели. Я получаю сообщение об ошибке, например «модель не существует в текущем контексте». И я получу красную строку под моделью. Он также не обнаруживает классы в модели, и попробует поставить строку ошибок под помощниками Html. Однако, когда я создаю проект и запускаю его, он отлично работает. Я пробовал множество предложений по переполнению стека, большинство из которых связано с изменениями в конфигурационных файлах, однако ничего не работает. Вот что я имею в разделе system.web моего web.config: MVC3 Razor Views Intellisense не обнаруживает объект модели

<customErrors mode="On" defaultRedirect="~/Error/ShowError"> 

<siteMap defaultProvider="AgilitySiteMapProvider"> 
     <providers> 
      <add name="AgilitySiteMapProvider" type="Agility.Web.Providers.AgilitySiteMapProvider, Agility.Web" /> 
     </providers> 
    </siteMap> 

    <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="Agility.Web" /> 
      <add namespace="Agility.Web.Mvc" /> 
    <add namespace="CineplexWebsite.Helpers" /> 
     </namespaces> 
     <controls> 
      <add tagPrefix="Agility" assembly="Agility.Web" namespace="Agility.Web.Controls" /> 
      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </controls> 
    </pages> 

    <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" /> 
    </assemblies> 
</compilation> 

<authentication mode="None"> 

</authentication> 

и вот что у меня есть в мои взгляды web.config

<system.web> 

<customErrors mode="On" defaultRedirect="~/Error/ShowError"> 

<siteMap defaultProvider="AgilitySiteMapProvider"> 
     <providers> 
      <add name="AgilitySiteMapProvider" type="Agility.Web.Providers.AgilitySiteMapProvider, Agility.Web" /> 
     </providers> 
    </siteMap> 

    <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="Agility.Web" /> 
      <add namespace="Agility.Web.Mvc" /> 
    <add namespace="CineplexWebsite.Helpers" /> 
     </namespaces> 
     <controls> 
      <add tagPrefix="Agility" assembly="Agility.Web" namespace="Agility.Web.Controls" /> 
      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </controls> 
    </pages> 

    <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" /> 
    </assemblies> 
</compilation> 

<authentication mode="None"> 

</authentication> 

Любая идея, что вызывает это? Мне не хватает ссылки на dll?

+0

Что происходит с вами, добавьте '@using CineplexWebsite.Helpers' в начало вашего просмотра? – Jay

+0

та же проблема. Я получаю красную строку под любым помощником в представлении, но когда я создаю проект и запускаю его, он отлично работает. – Daryl1976

+0

Создайте проект один раз и посмотрите, входят ли ссылки. –

ответ

2

В вашем проекте есть 2 web.config файлы:

  • в корне проекта
  • в папке Views

Вы должны добавить <add namespace="CineplexWebsite.Helpers" /> модель пространства имен в конфигурационный файл в папке Views. Обычно он не регулируется. Закройте и снова откройте проект, затем он будет regocnize.

+0

Я пробовал это, однако он по-прежнему не распознает типы, которые у меня есть на мой взгляд. Например, хотя мое представление строго типизировано, представление по какой-либо причине интерпретирует переданный объект как «динамический объект», будет оцениваться во время выполнения ». Он не распознает объявление @model - есть красная строка, которая говорит, что «@model не существует в текущем контексте» – Daryl1976

+0

Во-первых, иногда это показывает, что «@model не существует в текущем контексте», но в время работы. Во-вторых, возможно, ваше пространство имен не ссылается на ваше приложение asp.net. –

Смежные вопросы