我有一台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
答案 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) 试试看,让我知道这对我有用。
谢谢!