名称'模型'在当前上下文ASP.NET MVC5中不存在

时间:2014-02-27 08:41:55

标签: c# asp.net web-config asp.net-mvc-5 nopcommerce

我正在编写一个插件到NopCommerce 3.2,在视图中我得到了上面提到的错误,但也有'布局'和'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为问题这就是我在我的问题中包含该文件的原因)但找不到它。

10 个答案:

答案 0 :(得分:5)

此错误可能是由R​​esharper引起的。我们是使用GIT的三个开发人员组成的团队。我们其中一人安装了Resharper,这可能导致了我们其他两个人的错误。当我们安装Resharper试用版时,它突然又恢复了工作。不幸的是,再次卸载Resharper时它无法正常工作......

答案 1 :(得分:3)

尝试在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视图文件。重建项目。然后再打开它们。

答案 2 :(得分:3)

取消安装项目MVC Nuget Package并重新安装它为我修复了它。当我改变项目的.net版本时,我的版本很糟糕。

答案 3 :(得分:2)

确保您在视图上定义的命名空间与模型的命名空间匹配。

答案 4 :(得分:2)

如果将项目属性更改为目标4.5.1,

其他地方很多的targetFramework仍然会说45

您可以在root web.config中找到3-4次targetFramework 以及各种packages.config。

我遇到了同样的问题,将Project更改为目标4.5并将其清除。

最好不要定位4.5.1

答案 5 :(得分:2)

我遇到了同样的问题。解决方案是卸载项目MVC Nuget Package并重新安装它。

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

答案 6 :(得分:2)

项目属性所有配置项目输出路径更改为/bin。这很奇怪,但似乎当VS 项目输出被推到/bin/Debug/bin/Release时,智能感知被彻底破坏了。

project properties

答案 7 :(得分:2)

我在MVC 5项目中遇到了同样的错误。我的情况是,Views文件夹中的Web.config没有以某种方式发布。添加它可以解决问题。

答案 8 :(得分:1)

我有同样的错误,只是改变了 至

我只是想在控制台应用程序中获取cshtml intellisense,这样我就可以回到标准的基础webviewpage了。

答案 9 :(得分:1)

我是我的情况,我必须通过关闭Visual Studio并删除此文件夹来reset the Visual Studio Component Cache

  

C:\ Users \ [用户名] \ AppData \本地\微软\ VisualStudio的\ 14.0 \ ComponentModelCache