我有一个具有以下属性的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。
答案 0 :(得分:3)
那些不是属性;他们是字段。绑定和验证仅对属性起作用。
FYI - [RegularExpression]
还允许用户为输入指定无值(将其转换为null)。如果您要禁止空值,请使用[Required]
以外的[RegularExpression]
。