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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top