我有这个班级
我想验证EmpType属性,以便只能从枚举EmploymentType中获取值。
然后我想验证EmplyomentNumber,以便它以" E"并包括3个数字
然后薪水属性必须大于或等于0.
element.outerHTML
答案 0 :(得分:0)
您无法使用自动实施的属性创建验证。您应该创建一个包含字段的属性:
public class Employment
{
[Required, StringLength(50, MinimumLength = 3, ErrorMessage ="Name must be between 3 and 50 characters long.")]
public string Name { get; set; }
private string _emplyomentNumber;
private decimal _salary;
public EmploymentType EmpType { get; set; }
public string EmplyomentNumber
{
get { return _emplyomentNumber; }
set
{
// validate here!
_emplyomentNumber = value;
}
}
public decimal Salary
{
get { return _salary; }
set
{
// validate here!
_salary = value;
}
}
}
public enum EmploymentType
{
Full,
Temporary,
Internship
}
除非某些枚举值无效,否则您不需要对EmploymentType
进行验证。
答案 1 :(得分:0)
要验证枚举,您应该这样做:
public EmploymentType EmpType
{
get
{
return empType;
}
set
{
if (EmploymentType.IsDefined(typeof(EmploymentType), value))
{
empType = value;
}
else
{
throw new InvalidEnumArgumentException("Error");
}
}
}
private EmploymentType empType;
答案 2 :(得分:0)
如果您要验证EmployeeNumber
,请使用RegularExpressionAttribute
。例如:
[RegularExpression("^[Ee]\d{3}$")]
public string EmployeeNumber{ get; set; }
至于EmploymentType
,这里的问题是你如何让用户选择这个值?是通过下拉列表,单选按钮等吗?如果您使用枚举中的值填充下拉列表,我认为您只需要使用EmpType
属性装饰[Required]
属性。
对于Salary
媒体资源,您可以使用[Range(0.1, 100000.0)]
。第一个值表示允许的最小值,后者是允许的最大值。这两个值都是必需的。如果没有最大值,则不能仅指定最小值,反之亦然。
有关可用数据注释的更多信息,请查看MSDN Documentation。