【发布时间】:2017-09-19 01:58:04
【问题描述】:
我有一个自定义验证属性:
public class RequireIfPropertyIsFalseAttribute : ValidationAttribute
{
private string basisProperty { get; set; }
public RequireIfPropertyIsFalseAttribute(string basisProperty)
{
this.basisProperty = basisProperty;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var basisProp = validationContext.ObjectType.GetProperty(basisProperty);
var isFalse = !(bool)basisProp.GetValue(validationContext.ObjectInstance, null);
if (isFalse)
{
if (value == null || (value.GetType() == typeof(string) && string.IsNullOrEmpty(((string)value).Trim())))
return new ValidationResult(this.ErrorMessage);
}
return ValidationResult.Success;
}
}
我将它用于两个模型属性:
public bool NoAgeProvided { get; set; }
[RequireIfPropertyIsFalse(nameof(NoAgeProvided), ErrorMessage = "This is required")]
[Display(Name = "Age")]
public int Age { get; set; }
public bool NoNameProvided { get; set; }
[RequireIfPropertyIsFalse(nameof(NoNameProvided), ErrorMessage = "This is required")]
[Display(Name = "Name")]
public string Name { get; set; }
验证后,名称验证消息会显示“这是必需的”。但是,对于 Age 属性,验证消息上会显示“The Age field is required”。我究竟做错了什么? 如何显示设置的ErrorMessage?
【问题讨论】:
标签: asp.net-mvc