Saltar al contenido

Validación del modelo MVC .Net Core: el valor ” no es válido. Error

Posteriormente a consultar expertos en este tema, programadores de diversas ramas y maestros dimos con la solución a la cuestión y la plasmamos en este post.

Solución:

Para hacer tu Required attribute funciona lo que necesita para hacer que el campo sea anulable:

public DateTime? AppointmentDate  get; set; 

Editar: también tenga en cuenta que DataType attribute en realidad no realiza la validación en el campo. Fecha de validación de MVC al aplicar el enlace desde post datos a model

Después de que cambió el sistema de validación de .NET Core 3. Los parámetros que no aceptan valores NULL se tratan como si tuvieran un [Required] attribute. Obtiene la validación del lado del cliente incluso si no aplica el [Required] attribute. La validación JQuery del lado del cliente acepta campos de cadenas vacías, pero una vez enviado al servidor, el mismo campo obtendrá un resultado no válido. The value '' is invalid es el mensaje de error predeterminado para la validación del lado del servidor. De acuerdo con los documentos de asp.net mediante el uso de un [Required] attribute puede anular este mensaje, pero no se aplica a los campos vacíos. Desafortunadamente, esta característica genera vacío string valores (“”) para campos de entrada ocultos que hacen referencia a propiedades int no anulables (es decir, @Html.Hiddenfor(m=>m.id) generaría “” para el elemento html). Entonces, de todas las opciones proporcionadas en los documentos de asp.net, la más segura es hacer que la propiedad sea anulable. otra buena opción es cambiar el mensaje predeterminado de .NET a otra cosa

services.AddRazorPages()
    .AddMvcOptions(options =>
    
        options.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor(
            _ => "The field is required.");
    );

Puedes leer más sobre esto aquí.

Tiene el mismo problema pero no puede detectar el problema. Revisé el objeto en modo de depuración para ver si hay alguna forma de ver qué propiedad falla en el estado del modelo.

Vista del modo de depuración del objeto modelstate

Luego veo el modelo que falla. Ese es un valor booleano que se asigna a una casilla de verificación

¡La parte extraña es “este no es un campo obligatorio”!

Agregué un signo de interrogación y usé el método getvalueordefault cuando lo usé

public bool? IsCorporateAccount  get; set; 

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *