我有一个具有这些属性的searchViewModel:

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

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

如您所见,我希望“名称”是目前sortfield的唯一有效值,而“ ASC”或“ DESC”是sortrightection的唯一有效值。

但是,当值不同时,ValidateModel不会捕获任何错误,并且ModelState.ISVALID返回true。基本上,我可以提供任何价值,它将永远通过。

缩写控制器方法:

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

        //...
    }

我究竟做错了什么?

编辑: 我不确定这是否重要,但是我正在使用自定义模型框。

有帮助吗?

解决方案

这些不是属性;他们是 字段. 。绑定和验证 只要 对抗属性。

供参考 - [RegularExpression] 还允许用户指定输入的值(将转换为null)。如果要禁止零值,请使用 [Required] 此外 [RegularExpression].

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top