属性 [必需] 不适用于 Blazor 中用于表单输入验证的 int?

问题描述

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; }


    }
}

Name 的 required 属性有效,而 Name2 的属性无效。 Name2 的 Range 属性按预期工作。

我在 Visual Studio 16.9.4 中使用 ASP.NET Core 3.1。

解决方法

默认情况下,Name2 属性等于零。但是因为您允许的最小值是 1,所以在加载表单时您看不到零。

一些解决方案:

  1. 将 Name2 初始化为 1 到 100 之间的整数值或

  2. 将 Name2 声明为可为空的 int

    public int? Name2 { get; set; }