MVC3 Razor Views Intellisense没有检测到模型对象

时间:2013-08-02 20:39:15

标签: asp.net asp.net-mvc-3 razor

我的网站上的mvc视图一直存在问题,其中视图似乎没有检测到模型类型。我会收到一条错误消息,比如“模型在当前上下文中不存在。”,并且我会在模型下面得到一条红线。它也不会检测模型中的类,并会尝试在Html帮助程序下面放置一个错误行。但是,当我构建项目并运行它时,它工作正常。我已经尝试了很多关于Stack Overflow的建议,大多数都涉及对配置文件的更改,但是没有任何作用。这是我在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>

以下是我在视图中的内容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参考吗?

1 个答案:

答案 0 :(得分:2)

在您的项目中有2个web.config个文件:

  • 在项目的根目录
  • 在Views文件夹

您应该将<add namespace="CineplexWebsite.Helpers" />模型命名空间添加到Views文件夹中的配置文件中。通常,它不会重新定位。再次关闭并打开项目,然后它将重新定位。