【问题标题】:How do I fully customise the default ASP .Net Core Identity pages?如何完全自定义默认的 ASP .Net Core Identity 页面?
【发布时间】:2019-01-09 01:29:20
【问题描述】:

我目前正在尝试使用 .Net Core 2.1/MVC 学习和理解所有新的 Identity 点点滴滴。以前,我使用过 MVC3 MVC Identity,它很简单——它自动创建了模型、视图和控制器,我可以轻松地编辑所有内容。

使用 .Net Core,它似乎会自动继承框架中的所有内容,我只是不太容易理解如何覆盖。

我遵循了located here 的指导,并设法搭建了所有页面(例如,创建用户、重置密码、登录),但是,这不会创建任何模型或控制器。

因此,我现在有一个包含所有页面的项目,但是由于缺少所有模型,它无法构建:

CS0246  The type or namespace name 'ChangePasswordModel' could not be found (are you missing a using directive or an assembly reference?

我觉得我错过了一些明显的东西,我不敢相信我在大约 10 年前很简单的事情上挣扎了这么多。

如何创建/导入缺少的控制器和模型?

【问题讨论】:

  • 以文本形式发布错误消息
  • 嗨@barbsan - 如果您单击链接,它将显示所有错误消息。我不能轻易展示图片,因为我的代表少于 10 个。主要问题是我看不到如何重新创建使身份工作所需的控制器或模型:(
  • @barbsan - 好吧,它并没有真正添加任何东西......事实上,根据问题文本和标题,没有模型。所有图片都显示它们丢失了......无论如何我都会尝试编辑它。
  • Identity 的默认 UI 使用 Razor 页面。没有控制器,模型位于页面本身的代码隐藏中。如果你用脚手架把它们放进去,你不应该有任何问题。您可能只需要重建您的项目。

标签: asp.net-mvc asp.net-core model asp.net-identity asp.net-core-identity


【解决方案1】:

Identity 附带一个由 Razor 页面和位于 Razor 类库中的静态文件组成的默认 UI。当您在项目中使用 AddDefaultIdentity 启用 Identity 或在任何其他 Identity 引导扩展方法 (AddIdentity/AddIdentityCore) 上显式调用 AddDefaultUI 时,默认情况下会添加它。

Razor 类库中的视图和静态文件是嵌入式资源,因此被视为直接存在于引用它们的应用程序中。但是,您的应用程序中实际存在的任何内容都将在任何嵌入式资源之前使用。因此,您可以覆盖来自 RCL 的任何内容,只需在应用程序的 RCL 中存在的相同位置创建相同的文件即可。 Identity 脚手架只是将选定的 Razor 页面复制到您的项目中,以便它们以这种方式覆盖。

由于 Razor 页面用于默认 UI,因此没有控制器或单独的模型类。用于视图的模型是在 Razor 页面代码隐藏中建立的,因此对于您搭建的每个页面,您都应该添加 Page.cshtmlPage.cshtml.cs 文件。

如果您在搭建脚手架后构建失败,则构建不会看到 *.cshtml.cs 文件(代码隐藏)。验证它们确实存在于您的项目的文件结构中。如果他们不这样做,那么您的 Visual Studio 实例中的脚手架存在一些基本问题,这可能需要重新安装或至少修复 Visual Studio。

假设它们在那里,那么构建过程中就会出现问题。有时文件确实被锁定,Visual Studio 会抱怨它缺少引用,而实际上它只是缺少那些来自的程序集。在这种情况下,您可以直接导航到您的项目并完全删除 binobj 目录。然后,回到 Visual Studio 并进行重建。如果您有多个项目,则应重新构建整个解决方案,因为它可能是实际上无法构建的项目引用。

【讨论】:

  • 谢谢,看起来它正在锁定文件/AV 导致一些问题。我卸载了 AV,重新安装了 VS,一切都按预期工作。当我有足够的代表这样做时,我会+你! :)
猜你喜欢
  • 2020-02-01
  • 2021-06-17
  • 1970-01-01
  • 2020-11-04
  • 2021-10-26
  • 2017-09-11
  • 2019-01-01
  • 2018-11-18
  • 2018-10-18
相关资源
最近更新 更多