I have a Blazor web application which uses System.ComponentModel.DataAnnotations attribute for validation in a registration form.
I have a property named NationalCode which is nullable long
I did not added [Required] attribute above my NationalCode property
But when I want to submit the form if I leave the field NationalCode empty this validation message appears
"The value '' is not valid for 'NationalCode'."
If I change my code and add [Required] attribute like this :
[Required(ErrorMessage = "Please Enter your national code", AllowEmptyStrings = true)]
public long? NationalCode { get; set; } = null;
Two message appears :
- "The value '' is not valid for 'NationalCode'."
- "Please Enter your national code"
But I want only my message appear.
Where is the first message come from ?
How can I disable it ?
This is my codes :
<div class="form-floating">
<InputNumber @bind-Value="Input.NationalCode" autocomplete="nationalCode" aria-required="true" />
<label for="family">NationalCode</label>
<ValidationMessage For="() => Input.NationalCode" class="text-danger" />
</div>
private sealed class InputModel
{
public long? NationalCode { get; set; }
}
.NET Version
8.0.3

First you need to clear the statement. Let's look at "Required(ErrorMessage = "Please Enter your national code", AllowEmptyStrings = true)]". So, is NationalCode required or it can be empty?
After that, you will be able to program it.
P. S. You can declare the property as
It provides with an empty string as the initial value to display. It can be easier than other solutions like to obtain a valid code.