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

È stato utile?

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].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top