ValidateModel DataAnnotations问题

时间:2010-06-04 17:56:54

标签: c# validation asp.net-mvc-2 data-annotations model-validation

我有一个具有以下属性的SearchViewModel:

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

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

正如您所看到的,我希望此时“name”是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 个答案:

答案 0 :(得分:3)

那些不是属性;他们是字段。绑定和验证对属性起作用。

FYI - [RegularExpression]还允许用户为输入指定无值(将其转换为null)。如果您要禁止空值,请使用[Required]以外的[RegularExpression]