Asp.net mvc 4 已忽略自定义validationattribute错误消息
我有以下自定义ValidationAttribute,其工作方式与所需的validation属性相同,但我接受将其值连接到错误消息的属性的名称。但是,错误消息总是以“需要[fieldName]字段”的形式出现 怎么了Asp.net mvc 4 已忽略自定义validationattribute错误消息,asp.net-mvc-4,validationattribute,Asp.net Mvc 4,Validationattribute,我有以下自定义ValidationAttribute,其工作方式与所需的validation属性相同,但我接受将其值连接到错误消息的属性的名称。但是,错误消息总是以“需要[fieldName]字段”的形式出现 怎么了 public class RequiredFieldWithValueOnErrorMessage : ValidationAttribute { // a little portuguese lesson :P // propriedade = property // m
public class RequiredFieldWithValueOnErrorMessage : ValidationAttribute
{
// a little portuguese lesson :P
// propriedade = property
// mensagemDeErro = errorMessage
public RequiredFieldWithValueOnErrorMessage (String propriedade, String mensagemDeErro)
{
if (!String.IsNullOrEmpty(mensagemDeErro))
{
this.ErrorMessage = mensagemDeErro;
}
else
{
this.ErrorMessageResourceName = "MensagemCampoRequerido";
this.ErrorMessageResourceType = typeof(MensagensInterfaceUsuario);
}
Propriedade = propriedade;
}
private String Propriedade { get; set; }
public override string FormatErrorMessage(string name)
{
return String.Format(ErrorMessage, name);
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Object instance = validationContext.ObjectInstance;
Type type = instance.GetType();
Object propertyValue = type.GetProperty(Propriedade).GetValue(instance, null);
if (value == null || value.ToString() == "0" || String.IsNullOrWhiteSpace(value.ToString()))
{
return new ValidationResult(FormatErrorMessage(propertyValue.ToString()));
}
return ValidationResult.Success;
}
}
我发现的一件事是,如果我将正在验证的属性的类型更改为Int64?(nullable int),它可以工作。为什么?