Создайте страницу пользователя-идентификатора для ASP.NET Идентификация MVC

#c# #asp.net #asp.net-mvc #asp.net-mvc-5 #asp.net-identity

#c# #asp.net #asp.net-mvc #asp.net-mvc-5 #asp.net-identity

Вопрос:

Я реализую ASP.NET Идентификатор MVC (.NET Framework), а также страница регистрации и страница аутентификации входа в систему, как и ожидалось, были сгенерированы автоматически.

Я хотел бы иметь отдельную страницу для списка ЗАРЕГИСТРИРОВАННЫХ ПОЛЬЗОВАТЕЛЕЙ, и это то, что я сделал.

  1. Добавьте контроллер — MVC5 с помощью Vies, используя Entity Framework, для автоматической генерации функциональности CRUD.

введите описание изображения здесь

После выполнения я получил эту ошибку> В модели представления не определен ключ

введите описание изображения здесь

Итак, я попытался добавить свойство Id в модель следующим образом

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

      .... 
   }
  

Но все равно получаю ту же ошибку.

Пожалуйста, сообщите

Комментарии:

1. Это неправильный генератор кода, потому что модели представлений не хранятся в базе данных и не должны храниться.

2. Я согласен с @AluanHaddad в том, что ваша «модель» не должна называться «view model», пожалуйста, проверьте, как работает MVVM. однако вы, безусловно, можете называть свою модель как угодно, включая ‘viewmodel’, и генератор все равно должен работать

Ответ №1:

Первичный ключ должен однозначно идентифицировать строку. Редко используется строка в качестве первичного ключа.

Если это действительно имеет смысл, и строка является единственным уникальным идентификатором для вашей таблицы, то вы должны сообщить Entity Framework, что ваш ключ не является столбцом идентификатора, поскольку он по умолчанию пытается применить это свойство к столбцу [Key] .

подробнее об ИДЕНТИФИКАЦИИ в T-SQL
https://learn.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; }
  

Все, что было сказано, вам, вероятно, следует использовать integer или Guid

Ответ №2:

вам нужно изменить идентификатор вашего свойства со строки на целое число

Комментарии:

1. Это правильно, но не совсем правильно. У вас может быть первичный ключ в виде строки.