Атрибут [обязательный] не работает с int для проверки ввода формы в Blazor?

Атрибут Required не работает с целочисленными значениями. Я также пробовал атрибут Range в целочисленном поле и ведет себя нормально. Проблема заключается в том, что проверка не выполняется и требуемое сообщение во внешнем интерфейсе не отображается. Для строковых значений атрибут ведет себя так, как ожидалось. Это пример кода:

@page "/test"


<EditForm Model="@exampleModel">
    <DataAnnotationsValidator />
    <ValidationSummary />

        <InputNumber @bind-Value="exampleModel.Name2"></InputNumber>

        <button type="submit" value="Save" >
            Submit
        </button>

</EditForm>

@code {
    private ExampleModel exampleModel = new ExampleModel();


    public partial class ExampleModel
    {

        [Required]
        public string Name { get; set; }

        [Required]
        [Range(1, 100, ErrorMessage = "Error Test")]
        public int Name2 { get; set; }


    }
}

Обязательный атрибут для имени работает, а атрибут для имени 2 - нет. Атрибут Range для Name2 работает должным образом.

Я использую ASP.NET Core 3.1 с Visual Studio 16.9.4.


person Daniel    schedule 28.04.2021    source источник
comment
Имя2 - это int (в отличие от int?), поэтому оно всегда будет иметь значение (0) и, следовательно, требуется, не будет помечено. Использовать int? если это необязательно.   -  person Steve Greene    schedule 28.04.2021


Ответы (1)


По умолчанию свойство Name2 равно ZERO. Но поскольку ваш допустимый минимум равен 1, вы не увидите НОЛЬ при загрузке формы.

Некоторые решения:

  1. Инициализировать Name2 целочисленным значением от 1 до 100 ИЛИ

  2. Объявить Name2 как int, допускающий значение NULL

    public int? Name2 { get; set; }
person Jason D    schedule 28.04.2021