预定义类型System.Object未定义或未导入
预定义类型System.Object未定义或未导入
我在VS 2015的.cshtml文件中遇到了这个奇怪的错误。
当我用VS 2013打开项目时,错误不会出现。
以下是我的引用:
False N:\XXX\Sitecore.Kernel.dll N:\XXX\Sitecore.Mvc.dll False N:\XXX\System.Web.Helpers.dll False N:\XXX\System.Web.Mvc.dll N:\XXX\System.Web.Providers.dll False N:\XXX\System.Web.Razor.dll False N:\XXX\System.Web.WebPages.dll False N:\XXX\System.Web.WebPages.Deployment.dll False N:\XXX\System.Web.WebPages.Razor.dll
这可能是什么原因?
请参考我提问的这个问题,它是同样的问题: The type or namespace name 'System' could not be found
问题的原因是在使用MVC 4和VS 2015时,CSHTML智能感知存在许多问题。解决方法是升级到MVC 5,并根据上述链接中的问题回答,MVC 4仍然可以工作,只是不完美。
然而,在升级到MVC 5后,出现了一个新的问题。当在CSHTML文件中使用一些预定义类型时,会出现错误消息"Predefined type System.Object is not defined or imported"。这个问题的原因是MVC 5的CSHTML视图模板默认使用的是Razor 3,而Razor 3不再支持预定义类型的引用。
解决这个问题的方法是在Web.config文件中添加以下配置:
上述配置将Razor 3的默认配置修改为使用MVC 5的配置,从而解决了"Predefined type System.Object is not defined or imported"的问题。
通过以上方法,我们可以解决在升级到MVC 5后出现的"Predefined type System.Object is not defined or imported"问题。这个问题的根源是Razor 3不再支持预定义类型的引用,因此我们需要修改配置以使用MVC 5的配置来解决这个问题。