“ViewBag”这个名称在当前上下文中不存在

时间:2013-03-21 14:54:19

标签: asp.net-mvc-3 razor windows-server-2003

我有一台Windows 2003 R2服务器。我必须运行.NET MVC3网站。 我已经安装了所有运行时(1,2和4),我已经安装了所有MVC框架(3和4),但是这个错误并没有消失。

我的web.config应该在视图中。我已经跟踪了所有和每个解决这个问题的进出stackoverflow的问题。我还使用Add Deployable Dependencies(右键单击mvc项目)在我的bin文件夹中部署了所有dll。

此时我不知道还能做什么。在线提出想法或解决方案。

我已经卸载并重新安装了所有运行时,框架等。在我的本地计算机上它运行得很好(Windows 7)但是当我部署时,我得到以下错误。

  

编译器错误消息:CS0103:当前上下文中不存在名称“ViewBag”

     

来源错误:

     

第1行:@ {

     

第2行:ViewBag.Title =“主页”;

     

第3行:}

     

第4行:< h2> @ ViewBag.Message< / h2>

     

源文件:d:\ FamilyDermMVC \ Views \ Home \ Index.cshtml行:2

10 个答案:

答案 0 :(得分:73)

听起来您在视图文件夹中的Web.Config 中缺少以下内容:

/Views/Web.Config

<?xml version="1.0"?>

<configuration>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

      <pages pageBaseType="System.Web.Mvc.WebViewPage"> // <-- this line and contents are important
        <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>

视图通常派生自在web.config中配置的System.Web.Mvc.WebViewPage。如果您没有在应用程序中部署DLL,则基类位于以下DLL中:

  

Assembly System.Web.Mvc.dll,v4.0.30319

     

c:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll

更新1

如果您手动从MVC X升级到MVC Y,这需要更改您的目标.Net Framework(比如4.5到4.6),如果您有旧的引用(指向MVC 5而不是6),那么显然旧文件不能与较新的文件一起使用(例如,MVC 5 DLL不能用于4.6中的System.Web)。

答案 1 :(得分:5)

我看到这篇文章被发布了一段时间,但我想我还是会在这个问题上添加我的经验。

在创建一个新的MVC asp.net项目后,我立即得到同样的错误。我只需点击了BUILD - &gt;清洁解决方案,然后构建解决方案,它解决了我的问题。仍然不太确定为什么错误在第一时间出现,尽管它在第一次生成之后就出错了。

答案 2 :(得分:5)

我遇到了同样类型的问题(无法识别html帮助程序代码)。

我不确定它是如何开始的但我通过更换以下内容来解决它:

<appSettings>
    <add key="webpages:Enabled" value="false" />
</appSettings>

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
</appSettings>

在视图web.config文件中。

找到我的解决方案here

答案 3 :(得分:1)

确定。我修好了它。我不确切知道修正了什么,但我猜这整个“9英里”修复了它。

我删除了(删除程序)所有MVC扩展,工具以及你在那里找到的任何内容。

然后重新安装,而不删除.net运行时。 2和4.

然后安装mvc3和mvc4。我去了asp.net获取最新版本。

然后我在笔记本电脑上做了同样的事情。

注意:您需要Power Shell 2.0才能在Windows2003服务器中安装MVC4。您需要找到该服务器的特定下载。

一旦我这样做,回收应用程序池并重新启动服务器。

BANG ...页面加载。

我希望将来可以帮助其他人。

感谢您的答案。

PS:我的感觉是我的笔记本电脑和服务器中没有相同版本(或版本)的mvc3(或mvc4)。

答案 4 :(得分:1)

似乎有很多解决方案,每种解决方案的成功率都是混合的。

对我来说,更改 Views / web.config 文件的这一行的版本号有效:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

我将 4.0.0.0 更改为 5.0.0.0 ,保存,关闭解决方案,重新打开,然后瞧!烦人的红色波浪是gones,intellisense返回

答案 5 :(得分:1)

Resharper可能会导致它

转到Visual Studio / Tools / Options / Resharper 然后点击立即暂停 /然后恢复Resharper ,您的日期将不再是灰色,但可能您的剃刀窗口中会有更多灰色!

答案 6 :(得分:0)

在我的情况下,我遇到了这个问题,因为我试图将MVC 3项目运行到支持MVC 2的平台。

然后我在我的系统上安装了MVC 3,问题消失了

答案 7 :(得分:0)

http://www.asp.net/mvc/mvc5安装Visual Studio 2012的ASP.NET MVC 5支持为我解决了这个问题。

答案 8 :(得分:0)

有时关闭视图,重建,打开视图会有所帮助。

答案 9 :(得分:0)

无论是否在web.config文件中完成了所有正确的配置,我都遇到了这个问题。

发现是 组件缓存中的一些错误文件,从而阻止Razor视图识别ViewBag,Model和HtmlHelpers。删除这些文件可以解决问题 (这些文件的好版本是在我下次打开Visual Studio时创建的)。

请按照以下路径查找文件:

C:\Users\your.name.here\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache

删除所有四个文件:

  
      
  • Microsoft.VisualStudio.Default.cache
  •   
  • Microsoft.VisualStudio.Default.catalogs
  •   
  • Microsoft.VisualStudio.Default.err
  •   
  • Microsoft.VisualStudio.Default.external
  •   

我关闭了我的项目,删除了该路径上的文件,然后重新打开了我的项目,清理了解决方案,然后重新构建它,问题就解决了

删除临时ASP.NET文件也有帮助。 C:\ Users \您的名称。此处\ AppData \ Local \ Temp \临时ASP.NET文件。

这样,您可以修复视图中与智能相关的所有错误(Razor MVC) 试试看,让我知道这对我有用。

谢谢!