为什么 ASP.NET Core Razor Pages 中的验证不接受空输入?

Why does validation in ASP.NET Core Razor Pages doesn't accept empty inputs?

我正在学习如何在 ASP.NET Core Razor Pages 中编写代码,并且现在正在进行验证。在客户端和服务器端验证中,即使我没有使用 [Required] 数据注释,也不允许输入为空,我正在寻找解决方案。该页面的C#代码如下:

    public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;

        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }
        [BindProperty]
        public int number { get; set; }
        public void OnGet()
        {

        }
        public IActionResult OnPost()
        {
            if(!ModelState.IsValid)
            {
                return Page();
            }
            Console.WriteLine("It works.");
            return Page();
        }
    }

本页的HTML代码如下:

    <form method="post">
    <label asp-for="@Model.number">Number: </label><br />
    <input asp-for="@Model.number" />
    <span asp-validation-for="@Model.number" class="text-danger"></span>
    <br /><br />
    <button class="btn btn-primary" type="submit">Submit</button>
</form>

    @section Scripts
{
}

在脚本部分,我使用部分加载验证脚本部分。当我将它粘贴到那里时,由于某种原因它不会作为代码加载到那里。 这只是一个简单的代码,旨在从用户那里获取一个整数,因为我只是想让它接受一个空值。我正在使用 .NET 6.0 和 Visual Studio Community Edition 2022。有人知道该问题的解决方案吗?

因为int类型不接受空值,为了解决你的问题,修改代码如下 也接受空值的数量

[BindProperty]
public int? number { get; set; }