为什么 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; }
我正在学习如何在 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; }