我已经创建了一个自定义验证规则,当且仅当前一组单选按钮显示为Yes
时,才需要两个文本框。如果没有选择无线电或No
,验证工作正常,但如果选择了Yes
则验证失败,如果提供了数据。
我的自定义验证是:
public class DamageSupport : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var incidentdetail = (IncidentDetail) validationContext.ObjectInstance;
return (incidentdetail.PropertyDamage == "Y") ? new ValidationResult("This field is required since Property Damage is set to 'Yes'") : ValidationResult.Success;
}
}
以下是我的模型验证规则:
[MaxLength(1)]
[Display(Name = "Property Damaged?")]
public string PropertyDamage { get; set; }
[RegularExpression(@"^\d+.\d{0,2}$")]
[Range(0, 99999999.99)]
[Display(Name = "Estimated value of damage")]
[DamageSupport]
public decimal? DamageAmount { get; set; }
[Display(Name = "Description of the damage")]
[DamageSupport]
public string DamageDescription { get; set; }
我在调试模式下查看ModelState对象数据中的数据,并且我输入的所有数据都存在,只是由于某种原因验证失败。
我通过删除自定义验证并保存相同的数据来仔细检查它不是数据类型问题,工作正常。
有人想到某个地方让我看看吗?