0

これらのプロパティを持つ SearchViewModel があります。

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

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

ご覧のとおり、現時点で SortField の有効な値は "name" だけにし、SortDirection の有効な値は "asc" または "desc" だけにします。

ただし、値が異なる場合、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]ユーザーは入力に値を指定しないこともできます(nullに変換されます)。null 値を許可しない場合は[Required]、 に加えて使用し[RegularExpression]ます。

于 2010-06-04T18:28:29.910 に答える