【问题标题】:Create an Identity User Page for ASP.NET MVC Identity为 ASP.NET MVC 身份创建身份用户页面
【发布时间】:2021-01-19 21:41:01
【问题描述】:

我实现了一个 ASP.NET MVC (.NET Framework) 身份,并且注册页面和登录身份验证页面如预期的那样自动生成。

我想为注册用户列表创建一个单独的页面,这就是我所做的。

  1. 添加控制器 - MVC5 与 Vies 使用实体框架自动生成 CRUD 功能。

执行后,我收到此错误>视图模型中未定义键

所以我尝试像这样在模型中添加 Id 属性

public class RegisterViewModel
    {
        [Key]
        public string Id { get; set; }

      .... 
   }

但仍然得到同样的错误。

请指教

【问题讨论】:

  • 这是错误的代码生成器,因为视图模型没有存储在数据库中,也不应该存储。
  • 我同意@AluanHaddad 的观点,即您的“模型”不应命名为“视图模型”,请查看 MVVM 的工作原理。但是您当然可以随意调用您的模型,包括“viewmodel”,并且生成器应该仍然可以工作

标签: c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity


【解决方案1】:

主键应该唯一标识一行。使用字符串作为主键并不常见。

如果确实有意义并且字符串是您的表的唯一唯一标识符,那么您必须让实体框架知道您的键不是标识列,因为它默认尝试将此属性应用于 [Key]列。

详细了解 T-SQL 中的 IDENTITY
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-ver15

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string FooId { get; set; }

话虽如此,您可能应该选择integerGuid

【讨论】:

    【解决方案2】:

    您需要将属性 ID 从字符串更改为整数

    【讨论】:

    • 这是正确的,但并不完全正确。您可以将主键设为字符串。
    猜你喜欢
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多