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

无法为继承IdentityUser的User类搭建ASP.NET Core控制器及视图问题

为什么继承IdentityUser后User类不再出现在脚手架模型下拉列表中?

这个问题其实是ASP.NET脚手架工具的默认行为导致的,我来给你拆解一下原因和解决办法:

核心原因

ASP.NET的脚手架(不管是Visual Studio GUI里的"搭建控制器"还是命令行工具)默认会过滤掉继承自IdentityUser的类,背后的逻辑是:

  • Identity体系已经提供了一套成熟的用户管理UI和控制器(比如自带的Login/Register/Manage等页面),脚手架工具默认认为这类属于Identity范畴的模型,不需要再生成常规的CRUD控制器,避免和内置的Identity功能产生冲突或重复。
  • 在你修改User类之前,它是一个普通的POCO(Plain Old CLR Object)类,脚手架会把它识别为常规业务模型,自然会出现在下拉列表里;但继承IdentityUser后,它就被归类为Identity相关类,直接被过滤掉了。

解决办法

如果你确实需要为这个User类生成自定义的控制器和视图,可以通过以下两种方式绕过这个限制:

1. 使用命令行脚手架工具(推荐)

打开项目的终端,运行dotnet aspnet-codegenerator命令来强制指定模型类,比如:

dotnet aspnet-codegenerator controller -name UsersController -m User -dc ApplicationDbContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries

参数说明:

  • -name:指定要生成的控制器名称
  • -m:明确指定你的User模型类
  • -dc:指定你的DbContext类(通常是ApplicationDbContext)
  • 后面的参数是配置视图布局和脚本引用的选项,按需调整即可。

2. Visual Studio GUI手动指定类名

有些版本的Visual Studio允许你在脚手架窗口的"模型类"下拉框中手动输入完整的类名(比如YourNamespace.User),而不用依赖下拉列表的选项。如果下拉框不显示,试试直接手动输入类的完全限定名,然后继续后续的脚手架配置步骤。

额外提示

生成控制器后,你可能需要根据自己的需求调整代码,比如处理IdentityUser自带的属性(如Id、UserName、Email等),避免和你自定义的FirstName/LastName等属性产生冲突。

内容的提问来源于stack exchange,提问作者Olawale david

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:53:11