I have a simple view model as:
public record CreateViewModel
{
[Required]
[StringLength(
250,
ErrorMessage = "The {0} must be at least {2} characters long.",
MinimumLength = 5
)]
public string Name { get; set; } = string.Empty;
[StringLength(
20,
ErrorMessage = "The {0} must be at least {2} characters long."
)]
[Display(Name = "Phone Number")]
public string AlternateContactPhoneNumber { get; set; } = string.Empty;
}
But for some reason when my controller run the state as:
if (!ModelState.IsValid)
{
return View(model);
}
It is returning that the Phone Number field is required and I do have not a required data annotation on that model property. Any one knows what is going on?
CodePudding user response:
Probably in your project settings in the .csproj
file, the settings are defined as below
<Nullable>enable</Nullable>
If you're using .Net6
and above, this option is enable
by default, Which makes string
like value types like int
and others cannot accept null
value by default. To solve this problem, you can set its value to disable
or define thestring
as nullable
as follows:
public string? AlternateContactPhoneNumber { get; set; } = string.Empty;
I recommend reading this article: : Nullable reference types
CodePudding user response:
Use the [ValidateNever]
attribute:
[ValidateNever]
public string AlternateContactPhoneNumber { get; set; } = string.Empty;