ValidateModel Проблема с аннотациями данных - PullRequest
0 голосов
/ 04 июня 2010

У меня есть SearchViewModel со следующими свойствами:

    [RegularExpression("name")]
    public String SortField;

    [RegularExpression("asc|desc")]
    public String SortDirection;

Как вы можете видеть, я хочу, чтобы «имя» было единственным допустимым значением SortField на данный момент, а «asc» или «desc»единственные допустимые значения для SortDirection.

Однако ValidateModel не улавливает никаких ошибок, когда значения отличаются, и ModelState.IsValid возвращает true.По сути, я могу указать любое значение, и оно всегда будет проходить.

Сокращенный метод контроллера:

    public ActionResult List(SearchViewModel model)
    {            
        ValidateModel(model); // No error here
        Boolean isValid = ModelState.IsValid // This is true

        //...
    }

Что я делаю не так?

Редактировать: Я не уверен, важно ли это, но я использую собственный ModelBinder.

1 Ответ

3 голосов
/ 04 июня 2010

Это не свойства; они поля . Привязка и проверка только работают со свойствами.

FYI - [RegularExpression] также позволяет пользователю не указывать значение для ввода (которое преобразуется в ноль). Если вы хотите запретить нулевые значения, используйте [Required] в дополнение к [RegularExpression].

...