Problema de ValidateModel con DataNoTations
-
24-10-2019 - |
Pregunta
Tengo un SearchViewModel con estas propiedades:
[RegularExpression("name")]
public String SortField;
[RegularExpression("asc|desc")]
public String SortDirection;
Como puede ver, quiero que el "nombre" sea el único valor válido de Sortfield en este momento, y "ASC" o "Desc" los únicos valores válidos para SortDirection.
Sin embargo, ValidateModel no está capturando ningún error cuando los valores son diferentes, y ModelState.ISValid devuelve verdadero. Básicamente, puedo proporcionar cualquier valor y siempre pasará.
El método del controlador abreviado:
public ActionResult List(SearchViewModel model)
{
ValidateModel(model); // No error here
Boolean isValid = ModelState.IsValid // This is true
//...
}
¿Qué estoy haciendo mal?
Editar: No estoy seguro de si esto es importante, pero estoy usando un ModelBinder personalizado.
Solución
Esas no son propiedades; ellos son campos. Vinculante y validación solamente trabajo contra propiedades.
FYI - [RegularExpression]
También permite al usuario no especificar ningún valor para la entrada (que se convierte en un nulo). Si desea no permitir los valores nulos, use [Required]
además de [RegularExpression]
.