可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a Windows 2003 R2 server. I have to run a .NET MVC3 website.
I already installed all the Runtimes (1,2 and 4), i have installed all the MVCs frameworks (3 and 4) but this error doesn't go away.
I have the web.config that is supposed to be in the Views in place. I have followed all and each of the solutions to this problem in and out stackoverflow. I have also deployed in my bin folder all the dll by using Add Deployable Dependencies (right click on mvc project).
At this point i don't know what else to do. Ran out of ideas or solutions online.
I already uninstalled and reinstalled all the runtimes, frameworks, etc. In my local computer it runs just fine (windows 7) but when i deploy, i get following error.
Compiler Error Message: CS0103: The name 'ViewBag' does not exist in the current context
Source Error:
Line 1: @{
Line 2: ViewBag.Title = "Home Page";
Line 3: }
Line 4: <h2>@ViewBag.Message</h2>
Source File: d:\FamilyDermMVC\Views\Home\Index.cshtml Line: 2
回答1:
Sounds like you're missing the following in the Web.Config
in the views folder:
/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>
Views typically derive from System.Web.Mvc.WebViewPage
which is configured in the web.config. If you are not deploying the DLL with the application, the base class is in the following DLL installed in:
Assembly System.Web.Mvc.dll, v4.0.30319
c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.Mvc.dll
Update 1
If you are manually upgrade from MVC X to MVC Y and this requires changing your target .Net Framework (say 4.5 to 4.6) that if you have old references (point to MVC 5 instead of 6) that obviously the older files cannot be used in conjunction with newer files (e.g. MVC 5 DLLs can't be used against System.Web in 4.6).
回答2:
I had the same type of problem (html helper code not being recognised).
I'm not sure how it started but i solved it by replacing the following:
<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>
with
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
</appSettings>
in the views web.config file.
Found my solution here
回答3:
I see this was posted awhile back, but thought I would add my experience with this issue anyway.
Upon creating a new MVC asp.net project I was getting this same error right off the bat. I simply clicked BUILD -> Clean Solution, then Build Solution and it fixed the problem for me. Still not quite sure why the error came about in the first place though as it errored out right after it first generated.
回答4:
Ok. I fixed it. I don't know exactly what fixed it but i guess this whole "9 miles" fixes it.
I removed (Remove Programs) all MVC extensions, tools and whatever you find there.
Then reinstalled, without removing, .net runtime. 2 and 4.
Then installed mvc3 and mvc4 back. I went to asp.net for the latest versions.
Then i did the same thing in my laptop.
NOTE: You will need Power Shell 2.0 in order to install MVC4 in Windows2003 server. You need to find the specific download for that server.
Once i did that, recycled app pool and restarted server.
BANG... page loaded.
I hope this helps other folks in the future.
Thank you for your answers thou.
PS: My feeling is that i didn't have the same version (or releases) of mvc3 (or mvc4) in my laptop and server respectively.
回答5:
It seems there are many solutions and the success rate of each is mixed.
For me, changing the version number on this line of the Views/web.config file worked:
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
I changed 4.0.0.0 to 5.0.0.0, saved, closed the solution, re-opened, then voila! The annoying red squiggles were gones and the intellisense returned
回答6:
Resharper is probably causing it
Go to Visual Studio/Tools/Options/Resharper
Then click Suspend Now / then Resume Resharper and your day will no longer be gray but probably your razor window will have more gray in it!
回答7:
In my case i got this problem because i was trying to run an MVC 3 project into MVC 2 enabled platform.
then i installed MVC 3 on my system an problem gone away
回答8:
installing ASP.NET MVC 5 support for Visual Studio 2012 from http://www.asp.net/mvc/mvc5 solves the issue for me.
回答9:
Sometimes closing the view, Rebuild, Open the view helps.