ValidateModel problema con DataAnnotations
-
24-10-2019 - |
Domanda
Ho un SearchViewModel con queste proprietà:
[RegularExpression("name")]
public String SortField;
[RegularExpression("asc|desc")]
public String SortDirection;
Come si può vedere, che voglio "nome" di essere l'unico valore valido di SortField in questo momento, e "asc" o "disc" i valori validi solo per SortDirection.
Tuttavia, non è ValidateModel recuperando alcun errore quando i valori sono diversi, e ModelState.IsValid restituisce true. Fondamentalmente posso fornire alcun valore e sarà sempre passare attraverso.
Il metodo di controllo abbreviato:
public ActionResult List(SearchViewModel model)
{
ValidateModel(model); // No error here
Boolean isValid = ModelState.IsValid // This is true
//...
}
Che cosa sto facendo di sbagliato?
Modifica:. non sono sicuro se questo è importante, ma io sto usando un ModelBinder personalizzato
Soluzione
Quelli non sono proprietà; sono campi . Binding e validazione solo lavoro contro le proprietà.
A proposito - [RegularExpression]
permette anche all'utente di specificare alcun valore per l'ingresso (che viene convertito in un valore nullo). Se si desidera disabilitare i valori nulli, l'uso [Required]
oltre a [RegularExpression]
.