ModelBinder无效枚举不会使IsValid = false;

时间:2013-08-28 04:33:37

标签: asp.net-mvc-4 enums data-annotations modelstate

将以下模型从视图传递给控制器​​:

public class CheckoutIndexCommand {
    [Required]
    public DeliveryTimeType DeliveryTime { get; set; }
}

此枚举为DeliveryTimeType:

public enum DeliveryTimeType {
    MORNING = 1,
    AFTERNOON = 2
}

在视图上:

@Html.DropDownListFor(m => m.DeliveryTime, Model.DeliveryTimeOptions)

在Controller Submit Action上我ModelState.IsValid检查。

这很完美。我很想知道如果我提交的选项具有无效值,例如:

,会发生什么
<option name="NotValidEnumValue" selected>xxx</option>

对于true,ModelState返回ModelState.IsValid,即使枚举无法匹配,也是不可取的。

我正在考虑解析枚举以检查它是否可以解析并手动添加模型状态错误,这就是问题:

是否有任何DataAnnotation或其他东西会为我检查有效的枚举值?

已经尝试过使用它但没有成功:

[Required]
[EnumDataType(typeof(DeliveryTimeType))]
public DeliveryTimeType DeliveryTime { get; set; }

0 个答案:

没有答案