我对.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字段验证时它不会失败用户没有在单选按钮列表中选择收入。
我能想到的是使用范围验证并在性别为女性时应用范围验证。 要么 如果有一个选项强制单选按钮列表发送回空字符串,如果选择的选项为空
或者有更好的方法或解决方法吗?
答案 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
等