MVC分部视图编译错误:projadmin.models命名空间不存在

错误详情
“/”应用程序中的服务器错误。编译错误
说明: 编译服务此请求所需的资源时出错。请查看以下特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0234: 命名空间“projadmin”中不存在类型或命名空间名称“models”(是否缺少程序集引用?)
源错误:
Line 29: Line 30: Line 31: public class _Page_Views_applicationengineer__projreportslist_cshtml : System.Web.Mvc.WebViewPage<IEnumerable<projadmin.models.report>> { Line 32: Line 33: #line hidden
源文件: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\445350b2\af487c21\App_Web__projreportslist.cshtml.81d00718.fc3benth.0.cs 行: 31
显示详细编译器输出:
显示完整编译源:
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.7.2053.0
一步步解决这个问题
我遇到过好多次这个错误,通常都是这几个原因,你挨个排查试试:
先核对命名空间的拼写和大小写
C#是大小写敏感的!很多人习惯把模型命名空间写成projadmin.Models(首字母大写),但你这里用的是projadmin.models,先去项目里确认实际的命名空间到底是啥,别写错了。确认引用了正确的程序集
如果projadmin.models是在另一个类库项目里,那你得在当前Web项目里添加对这个类库的引用:- 右键Web项目的「引用」→「添加引用」
- 在弹出的窗口里找到你的类库项目,勾选它,点击确定
- 然后右键解决方案,选择「重新生成解决方案」
给Views文件夹配置全局命名空间
打开Views目录下的Web.config,找到<system.web.webPages.razor>节点下的<namespaces>,添加一行命名空间引用:<add namespace="projadmin.models" />这样所有视图都能直接用这个命名空间下的类,不用每次都写完整的命名空间。
清理临时编译文件
有时候ASP.NET的临时编译文件会抽风,你可以手动删除c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\下面对应的那个文件夹(就是错误里提到的445350b2\af487c21),然后重启VS再编译一次。检查类库项目的编译状态
如果projadmin.models所在的类库项目本身编译失败,那Web项目肯定找不到它。先去类库项目里把所有错误修复了,确保类库能正常编译,再回来处理Web项目的问题。
内容的提问来源于stack exchange,提问作者Prathamesh

