1

我在我们的网站上遇到了 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 参考?

4

1 回答 1

2

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

  • 在项目的根目录
  • 在视图文件夹中

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

于 2013-08-04T13:00:18.563 回答