0

我有一个具有以下属性的 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。

4

1 回答 1

3

这些不是属性;他们是领域。绑定和验证适用于属性。

仅供参考 -[RegularExpression]还允许用户为输入指定任何值(它被转换为空值)。如果要禁止空值,请使用[Required]除了[RegularExpression].

于 2010-06-04T18:28:29.910 回答