ASP.NET 5+React自定义Identity默认UI出现Scripts未渲染错误求解
报错解决方案
报错的核心原因是Identity脚手架生成的Razor子页面中定义了Scripts分段,但作为父视图的_LoginPartial.cshtml或全局布局文件没有对该分段进行渲染,导致框架抛出异常。
修复步骤
- 优先尝试方案1:打开
/Pages/Shared/_LoginPartial.cshtml文件,在文件末尾所有HTML代码的外部添加以下代码:
@RenderSection("Scripts", required: false)
required: false表示如果子页面没有定义Scripts分段也不会触发报错,兼容所有场景。
- 如果方案1不生效,打开
/Pages/Shared/_Layout.cshtml全局布局文件,在</body>闭合标签之前添加上述@RenderSection代码。 - 如果仍未解决,直接打开所有Identity脚手架生成的页面(如
/Areas/Identity/Pages/Account/Login.cshtml、Register.cshtml等),删除页面中所有@section Scripts { }包裹的代码块,将块内的JS代码直接粘贴到页面对应位置即可,无需通过分段加载,从根源消除分段不匹配的问题。
自定义Identity功能实现步骤
扩展用户与分支机构关联
- 定义分支机构实体类,建立用户与分支机构的多对多关联关系,继承
IdentityUser扩展自定义用户类,添加分支机构的导航属性 - 在
ApplicationDbContext中配置实体关系,执行EF迁移更新数据库结构
注册页多选分支机构修改
- 打开
/Areas/Identity/Pages/Account/Register.cshtml.cs,在Input内部类中添加分支机构多选的绑定字段,OnGetAsync方法中查询全部分支机构列表传递到前端 - 前端
Register.cshtml新增多选下拉组件绑定对应字段,OnPostAsync方法中处理提交逻辑,将用户选中的分支机构关联关系存入数据库
登录页单选分支机构修改
- 打开
/Areas/Identity/Pages/Account/Login.cshtml.cs,用户名密码校验通过后,查询当前用户关联的所有分支机构返回前端供用户选择 - 用户选中分支机构后,将分支机构ID存入
Claim或会话中,供后续业务逻辑使用
角色功能开启
- 在
Startup.cs的服务注册逻辑中添加角色服务注册:
services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddRoles<IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>();
- 执行EF迁移更新数据库,生成角色相关表结构,之后即可实现角色创建、用户角色分配、接口角色权限校验等功能。
内容的提问来源于stack exchange,提问作者Cristo Ferrao
相关产品推荐
相关产品推荐

