在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
在我的MVC 4应用程序中进行了重大重构后,Razor在调试视图时显示了此错误:
当前上下文中不存在名称“model”。
这是有问题的代码行:
@model ICollection<DataSourceByActive>
我知道@model的用法是正确的。
为什么会这样?我该怎么解决呢?
当前回答
这里似乎有3个版本号设置需要彼此正确:
…包含。= . x.x.x Mvc,版本。x……(在各个地方~\Views\web.config) …System.Web.WebPages。= . x.x.x剃须刀,版本。x……(在各个地方~\Views\web.config) <add key="webpages:Version" value=" x.x.x.x。"x" />(在~\web.config中
对我有用的组合:
组合1:
包含。= 4.0.0.0 Mvc,版本
System.Web.WebPages。剃须刀,版本= 2.0.0.0之间
<add key="webpages:Version" value="2.0.0.0" />
结合2:
包含。= 5.2.7.0 Mvc,版本
System.Web.WebPages。= 3.0.0.0剃须刀,版本
<add key="webpages:Version" value="3.0.0.0" />
最后一个观察是网页:版本设置似乎是可选的。删除它似乎没有负面影响,至少在当前问题的背景下是这样。
其他回答
以我为例,我最近从MVC 4更新到MVC 5,这把web搞砸了。配置很糟糕。这篇文章帮助很大。
http://www.asp.net/mvc/overview/releases/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2
底线是你需要检查你的网页中所有的版本号引用。config和Views/web。配置,以确保他们引用了与MVC 5相关的正确升级版本。
已经7年了。然而,我的情况有点不同。
所有的视图都工作正常。因此,改变网络。Config和nuget获取新库将无法工作,这可能会导致问题。
我的场景是我一直在做项目B,项目B是项目a的克隆,长话短说,很多时间,为了节省时间,我不得不从项目B复制代码到项目a。
这一次,我只复制了文件abc。cshtml,从项目B到项目A。项目B使用2015年开发。出于某种原因,这引起了问题。我不知道。总之,我去掉了abc。CSHTML并创建空白abc。CSHTML从头开始。然后我选择abc上的每一个东西。并将所有文本复制到项目A新创建的abc.cshtml中。
我的问题解决了
我在部署到Azure应用程序服务时遇到了同样的问题
在我的例子中,是因为~/Views/Web。配置没有包含在项目中。
它在IIS Express中工作,但当我部署到azure时,我得到了同样的错误。由于没有包含在.csproj文件中,所以它没有被部署。
解决方案是确保~/Views/Web。配置包含在项目中。
如果您转到解决方案资源管理器并单击“显示所有文件”图标,然后打开视图,您可能会看到一个未包含的Web。配置文件在那里。
把它加进去,重新出版,就万事大吉了。
我有同样的问题,我创建了一个新的项目,并复制了网络。在Gupta的回答中推荐配置文件,但这并没有为我解决问题。我检查了Alex和Liam的答案,我认为这一行一定是从新网页上复制的。config,但它看起来像新项目本身没有这一行(MVC5):
<add key="webpages:Version" value="3.0.0.0" />
添加一行到views/web。配置文件解决了我的问题。
以下是我所做的:
关闭Visual Studio 删除SUO文件 重启Visual Studio
“.suo”文件是一个隐藏文件,与“.svn”解决方案文件位于同一文件夹中,包含Visual Studio用户选项。