Дополнительные свойства модели Binding in. NET Core MVC - PullRequest
1 голос
/ 26 апреля 2020

Я создал один AccountModel, который имеет следующие свойства

public class AccountModel
{
    [Required]
    [EmailAddress]
    public string Email { get; set; }

    [Required]
    [StringLength(10, MinimumLength = 6)]
    public string Password { get; set; }

    [NotMapped] // Does not effect with your database
    [Compare("Password")]
    [BindRequired]
    public string ConfirmPassword { get; set; }
}

Я пытаюсь использовать ту же модель для SignUp и SignIn. Эта модель отлично подходит для регистрации, но когда я использую ту же модель для SignIn, моя модель становится недействительной.

Я знаю причину, потому что я не передаю значение для свойства Подтвердить пароль. Я попытался следовать

  1. Я сделал NULLABLE, используя "?" но он предупреждает меня (см. скриншот) enter image description here

  2. Я также пробовал [BindRequired] аннотацию, которая также не работает.

Я использую ASP. NET Core 3.1 и пытаюсь использовать одну модель для входа и регистрации.

Есть ли какое-то решение для этого? Я учусь. NET Core & MVC, поэтому, имея меньше знаний по этому предмету.

Помощь приветствуется заранее.

1 Ответ

1 голос
/ 26 апреля 2020

Это называется Nullable контексты , на основе его документации :

Nullable контексты позволяют детально контролировать то, как компилятор интерпретирует ссылочный тип переменные. Обнуляемый контекст аннотации любой заданной строки источника либо включен, либо отключен. Вы можете думать о компиляторе до C# 8.0 как о компиляции всего вашего кода в отключенном обнуляемом контексте: любой ссылочный тип может быть нулевым. Контекст обнуляемых предупреждений также может быть включен или отключен. Контекст обнуляемых предупреждений определяет предупреждения, сгенерированные компилятором с использованием анализа потока.

Вы можете избавиться от этого предупреждения следующим образом:

#nullable enable
    public string? ConfirmPassword { get; set; }
#nullable disable

В качестве другого обходного пути, если вы Если вы хотите избавиться от этого предупреждения всегда в вашем проекте, вы можете добавить элемент Nullable в ваш файл .csproj, щелкнуть правой кнопкой мыши на вашем проекте и нажать «Редактировать файл проекта», а затем добавить элемент Nullable в свой файл. PropertyGroup раздел, как показано ниже:

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <Nullable>enable</Nullable>
</PropertyGroup>

Вам просто нужно Перестроить ваш проект один раз, чтобы увидеть результат.

...