彻底解决asp.net mvc5.2.2:vs2013 cshtml视图文件报错(当前上下文中不存在名称“model”,ViewBag,Url)

彻底解决asp.net mvc5.2.2:vs2013 cshtml视图文件报错(当前上下文中不存在名称“model”,ViewBag,Url)

20403发表于2016-02-28

最近遇到一个奇葩的问题,在vs2013下cshtml视图文件报错,出现当前上下文中不存在名称“model”,ViewBag,Url等等),在视图中也没有智能提示了,用@model声明视图的model类型也不可以,直接复制过去还会把model类给自动变成小写!!!。这个问题纠结了我一晚上。

网上出现的资料目前无非有以下几种方法(试了一下,都不管用):

1、检查项目根目录的web.config和Views文件下的web.config的mvcrazor版本信息是否一致。

2、重新新建一个mvc项目把对应正确的web.config拷贝过来。

3、安装vs2015(代价太大,不建议!)

4、用nuget重新安装一下ASP.NET MVC。

出现的错误如下:

错误 2 当前上下文中不存在名称“model” e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtml 3 2 Lanhu.Admin

错误 7 “System.Web.WebPages.Html.HtmlHelper”不包含“BeginForm”的定义,并且找不到可接受类型为“System.Web.WebPages.Html.HtmlHelper”的第一个参数的扩展方法“BeginForm”(是否缺少 using 指令或程序集引用?) e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtml 12 26 Lanhu.Admin

错误 9 当前上下文中不存在名称“ViewBag” e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtml 16 115 Lanhu.Admin


错误 11 当前上下文中不存在名称“Url” e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtml 48 47 Lanhu.Admin


错误 12 “System.Web.WebPages.Html.HtmlHelper”不包含“BeginForm”的定义,并且找不到可接受类型为“System.Web.WebPages.Html.HtmlHelper”的第一个参数的扩展方法“BeginForm”(是否缺少 using 指令或程序集引用?) e:\Stuff\projects\蓝狐软件工作室\src\Lanhu.Admin\Views\Student\Index.cshtml 49 50 Lanhu.Admin

如下图:


后来,我打开其他的项目,又正常。仔细对比了一下不报错的项目使用的ASP.NET MVC版本是5.0.0.0而现在报错是ASP.NET MVC5.2.2.0

这个报错的MVC5.2.2.0项目是从公司的电脑拷贝回来的(也是vs2013),这就奇怪了为什么会报错呢?智能提示也管用,虽然能够正常的运行,但是很不方便。于是我灵机一动,难道是vs版本的问题?

于是我对比了两者的vs版本。

自己家的vs版本如下:


公司的vs版本如下:


可以看到公司的vs2013是Update 4了,而家里的vs2013是REL版。这让我猜想可能是vs2013bug引起的,于是我试着把家里的vs版本也升级。

vs菜单“工具”=》“扩展和更新”


把vs2013更新下载到本地,然后安装。


勾选同意,点击安装

上面过程时间有点长,要等久一点,你可以现在泡一杯茶,坐等安装完成。


vs2013 update5安装完成之后,提示要重启电脑,然后重新打开vs2013,奇迹般的问题消失不了。


小编蓝狐