.net MVC 4 Enum的必需字段验证

时间:2014-03-17 07:39:28

标签: c# .net asp.net-mvc asp.net-mvc-4

我对.net MVC 4中的验证有疑问。

我有一个带有ViewModel的页面,它有两个属性

public Class SampleViewModel {
    public Gender Gender {get;set;}
    public Income Income {get;set;}
}

性别和收入都是Enum值。

下拉列表中的性别是必填字段,收入仅出现在女性客户中。因此,只有在申请中性别为女性时才需要收入。

在用户界面中,性别显示为下拉选项,收入显示为单选按钮列表。

我正在尝试为Income字段添加RequiredIf属性,但只检查当Gender为Female时,因为Enum的默认值为0,所以当require字段验证时它不会失败用户没有在单选按钮列表中选择收入。

我能想到的是使用范围验证并在性别为女性时应用范围验证。 要么 如果有一个选项强制单选按钮列表发送回空字符串,如果选择的选项为空

或者有更好的方法或解决方法吗?

1 个答案:

答案 0 :(得分:0)

由于枚举很容易转换为整数,因此将它们用作模型属性可能更容易。然后,您可以将Income属性设为可空,这样可以更好地使用RequiredIf属性:

public class SampleViewModel {

    [Required]
    public int Gender {get;set;}

    [RequiredIf("Gender", (int)Gender.Female)]
    public int? Income {get;set;}
}

在您的控制器中,您只需将它们转回您的枚举:

(Gender)model.Gender