types或名称空间名称不存在于名称空间“System.Web.Mvc”

Buiding MVC3解决scheme进展顺利,但在浏览器中出现错误:

编译器错误消息:CS0234:名称空间“System.Web.Mvc”中不存在types或命名空间名称“Html”(是否缺less程序集引用?

Source Error: Line 25: <add namespace="System.Web.Mvc" /> Line 26: <!--<add namespace="System.Web.Mvc.Ajax" />--> Line 27: <add namespace="System.Web.Mvc.Html" /> Line 28: <add namespace="System.Web.Routing" /> Line 29: <add namespace="System.Web.WebPages" /> 

我已经为NuGet的解决scheme安装了数据包,并为所有项目MVC3MVC3包含库System.Web.Mvc.AjaxSystem.Web.Mvc.Html和其他? 为什么我得到错误?


在参考文件夹中,我有System.Web.Mvc

Runtime version: v4.0.30319

 Version: 3.0.0.0 

Web.config文件

 <?xml version="1.0" encoding="utf-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=152368 --> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> <add key="webpages:Version" value="1.0.0.0" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> <system.web> <compilation debug="true" targetFramework="4.5" /> <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880" /> </authentication> <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" /> </namespaces> </pages> <httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <machineKey compatibilityMode="Framework45" /> <profile defaultProvider="DefaultProfileProvider"> <providers> <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> </providers> </profile> <membership defaultProvider="DefaultMembershipProvider"> <providers> <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> </providers> </membership> <roleManager defaultProvider="DefaultRoleProvider"> <providers> <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" /> </providers> </roleManager> <sessionState mode="InProc" customProvider="DefaultSessionProvider"> <providers> <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> </providers> </sessionState> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> </system.webServer> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> <entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> </entityFramework> <connectionStrings> <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SportStore;Integrated Security=True;Pooling=False;" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration> 

MSDN的System.Web.Mvc命名空间

文件packages.config

 <?xml version="1.0" encoding="utf-8"?> <packages> <package id="EntityFramework" version="5.0.0-rc" /> <package id="jQuery" version="1.7.2" /> <package id="jQuery.UI.Combined" version="1.8.11" /> <package id="jQuery.Validation" version="1.9" /> <package id="Microsoft.AspNet.Mvc" version="3.0.20105.1" /> <package id="Microsoft.AspNet.Providers.Core" version="1.0" /> <package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" /> <package id="Microsoft.AspNet.Razor" version="1.0.20105.408" /> <package id="Microsoft.AspNet.WebPages" version="1.0.20105.408" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> <package id="Modernizr" version="2.0.6" /> <package id="Moq" version="4.0.10827" /> <package id="Ninject" version="3.0.1.10" /> </packages> 

清理您的解决scheme,然后将这些文件的属性设置为Copy Local = True

将Copy Local属性设置为True或False

在解决scheme资源pipe理器中,单击显示所有文件button以显示引用节点。

  • 打开项目的引用节点。
  • 用鼠标右键单击引用列表中的引用,然后单击属性。 与该引用关联的属性显示在“属性”窗口的列表中。
  • 在“属性”窗口中,将“复制本地”属性更改为True或False。

无论出于何种原因,我的两个解决scheme都有自动卸载asp.net MVC的Web项目。 我从Nuget安装它,现在他们都工作了。 这发生在最近一批Windows更新之后,包括我使用的版本(4.5.1)的.net框架更新。

编辑:从.Net网站开发和工具博客:

微软Asp.Net MVC安全更新MS14-059打破了我的构build!

当我从IIS运行时,这个通常会捕获我,而默认站点的应用程序池被设置为.NET 2.0版。 从Visual Studio使用IIS时,它会创build一个虚拟目录,但仍然在默认网站的应用程序池下运行。 如果使用Web服务器中的构build,右键单击您的Web项目,去属性,并确保您正在运行在正确版本的.NET下。 在IIS上检查您的应用程序池上的.NET版本。

接下来从我最后一个关于如何创build项目的评论 – 您是否正确包括程序集,如下(取自VS10中MVC3项目模板生成的默认web.config文件):

 <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> 

我有同样的问题 – 我的情况是,我从一个lib文件夹引用新的System.Web.Mvc.dll,我没有“复制本地”设置为true。 然后,应用程序恢复到GAC中没有正确命名空间(Html,Ajax等)的版本,并给我运行时错误。

你需要更新MVC。

  1. 转到工具 – > NuGet包pipe理器 – >pipe理NuGet包的解决scheme
  2. 点击“更新”
  3. 更新“Microsoft ASP.NET MVC”
  4. 重build解决scheme

我的解决scheme是在pipe理Nuget软件包的解决scheme… – 我有很多更新来做很多包。

让我退后一步,说我把自己搞砸了,因为我把解决scheme和项目从一个文件夹移到另一个文件夹……所以与项目想法相比,事情已经不堪重负了。 一切都好转,但显然Nuget变得困惑,除非你使用不同的方法比我做的。

回到解决scheme…我只是去pipe理解决scheme的Nuget包… >> 更新 >> 微软和.NET,并点击“ 全部更新”button

一切都恢复正常和快乐。

我下载了一个mvc 5项目,并指出了这个问题

 <add namespace="System.Web.Mvc.Ajax" /> 

有了这个错误信息:

 CS0234: The type or namespace name 'Ajax' does not exist in the namespace 'System.Web.Mvc' (are you missing an assembly reference?) 

– >我来到这个网页,并尝试了一个干净的,上面的一些东西等…

什么对我来说只是为了

 Manage Nuget and Update all the packages. Then it worked fine. 

考虑到问题date,这个答案相当晚,但有人可能会觉得它有用。

上面的解决scheme都不适用于Visual Studio 2012本地项目,Net Framework 4.5 MVC 4.对于上下文,我正在按照CodeProject( http://www.codeproject.com/)创build一个准系统Web API的教程。文章/ 615805 / Creating-a-Clean-Minimal-Footprint-ASP-NET-WebAPI )当我遇到这个问题。

我的工作是明确地将“System.Web.Mvc”添加到我的应用程序的引用,即使应用程序已经引用“System.Web”。

在nuget包pipe理器中运行以下命令为我修复了这个问题:

 update-package microsoft.aspnet.mvc -reinstall 

我有同样的问题,但以上都没有为我工作。 他们确实把我放在了正确的方向。

例如,当我将System.Web.Mvc引用的“Copy Local”设置为“true”时,会自动将其设置为False。

我有多个项目依赖于我的解决scheme中的System.Web.Mvc引用,但只有一个导致了这个问题。 在VS 2012中,这个参考文件标有黄色的注意三angular形。

find这个参考=>删除它=>重新添加它

这为我修好了。 希望这可以帮助

复制本地=真正解决了我的一个项目。 但在另一个项目中,我得到了同样的错误,试图设置复制本地= true,但它不能解决我的问题。 在项目属性中将目标框架从4.5.1更改为4.5。

查看并检查csproj中的参考path。

我已经删除了对System.Web.Mvc(及其他)的引用,并将它们读入自定义path。 C:\Project\OurWebReferences

但是,这样做之后,仍然csproj中的参考path没有改变。 WAS

 <Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\..\OurWebProject\bin\Debug\System.Web.Mvc.dll</HintPath> </Reference> 

改为手动

 <Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <SpecificVersion>False</SpecificVersion> <HintPath>..\..\..\..\OurWebReferences\System.Web.Mvc.dll</HintPath> </Reference> 

path只是一个例子。

对我来说,解决scheme是确保所有的项目都在为同一个CPU构build – 在我的情况下是x86

我做了一件非常愚蠢的事(也许你也是)。

我试图调用System.Web.Mvc.Html.Partial("<Partial Page>")

那么你看… System.Web.Mvc.Html是一个命名空间,而不是一个类,我没有读取我的错误消息,所以我解释我的错误,类Html不存在于名称空间系统。 Web.Mvc,这就是我在这里结束了(愚蠢的我知道)。

我所需要做的就是在系统页面添加using语句@using System.Web.Mvc.Html ,然后@Html.Partial按预期工作。

如果上述任何一个不能解决你的问题,只需将System.Web.Mvc.dll的属性复制到本地即可。

它将解决

我有同样的问题,但在我的情况是由其他因素起源。 我写这个来帮助有同样问题的人。 我有多个项目的解决scheme。 其中两个与System.Web.Mvc一起工作,通常我们的参考是指向我们控制使用版本的外部软件包。 出于某种原因,其中一个项目引用到GAC并指向GAC dll(版本4.0.0.1),程序得到了错误。 纠正它:

简单检查对System.Web.Mvc的引用是否指向同一目录path中的同一个dll。

我希望有所帮助。

我有同样的问题,没有解决scheme为我工作,最后我删除了System.Web.MVC并再次添加然后一切恢复正常,我的问题解决了。

我已经从我的网站的bin frolder中删除了System.Web.dll。

我有这个问题,设置复制本地打开和closures等没有工作。 这个项目并没有使用nuget,所以修复这些问题也是不可能的。

我的修补程序是安装MVC 3(我通过networking平台安装程序)。

我怀疑这将成为更多的人的解决scheme,.NET框架继续推进,人们没有安装旧的MVC的东西。

很有可能将DLL设置为CopyLocal / true或者其他任何主要修复程序都可以解决您的问题,但这又是另一个让我陷入了20分钟浪费时间的边缘案例。

当您将您的命名空间添加到您的Views / Web.config时,请确保它们正确放置:

  <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="THE.NameSpace" /> <add namespace="THE.Namespace" /> </namespaces> </pages> </system.web.webPages.razor>