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