You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建新Controller时提示‘Controller是命名空间却被当作类型使用’的求助

解决‘Controller' is namespace but is used like a type’错误

我之前也踩过这个坑!别慌,咱们从几个常见的排查方向入手:

  • 检查命名空间冲突:最常见的原因是你的项目里存在一个名为Controller的自定义命名空间,和ASP.NET Core自带的Controller类重名了。比如你是不是写了namespace MyProject.Controller?这种情况下编译器会优先识别你的命名空间,而不是Mvc的Controller类。

    • 解决办法:要么重命名自己的Controller命名空间(比如改成MyProject.Controllers,加个复数),要么在定义控制器时使用完整的命名空间限定:
      public class HomeController : Microsoft.AspNetCore.Mvc.Controller
      {
          // 控制器代码
      }
      
  • 确认NuGet包引用正确:虽然你说已经安装了相关包,但还是要核实一下Microsoft.AspNetCore.Mvc或Microsoft.AspNetCore.Mvc.Core包是否正确安装,且版本和你的.NET版本兼容。可以右键项目 → 管理NuGet包,检查这些包的状态,缺失的话重新安装。

  • 检查using语句:看看控制器文件的顶部有没有添加using Microsoft.AspNetCore.Mvc;。如果没有这个using指令,编译器找不到Mvc的Controller类型,就可能误把其他同名命名空间当成目标类型。补上这个using语句再试试。

  • 清理重建项目:有时候Visual Studio的缓存会导致奇怪的编译错误。试试执行以下步骤:

    1. 点击顶部菜单的「Build」→「Clean Solution」
    2. 再点击「Build」→「Rebuild Solution」
    3. 最后重新生成项目
  • 验证项目SDK类型:确保你的项目是ASP.NET Core Web项目,查看.csproj文件里的Sdk配置应为:

    <Project Sdk="Microsoft.NET.Sdk.Web">
    

    如果是类库项目(Microsoft.NET.Sdk),需要额外添加Mvc相关包的引用才能使用Controller类。

内容的提问来源于stack exchange,提问作者Bhautik Dalicha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:09:13