2016-10-12 5 views
0

カスタムDataAnnotationに問題があります。カスタムDataAnnotationの問題

public class RequiredInt32 : ValidationAttribute 
{ 
    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     if (value != null) 
     { 
      if (Convert.ToInt32(value) == 0) 
      { 
       return new ValidationResult("custom-message"); 
      } 
     } 
     return ValidationResult.Success; 
    } 
} 

私はそのコードを持っています。条件が満たされた場合、「カスタムメッセージ」が返されます。「フィールドは無効です」が返されます。私が望むメッセージを返すために、私はそれを明示する必要があります。

は、私が間違っており、どのように私は、デフォルトのメッセージを持って行うことができます[RequiredInt32(にErrorMessage = @ "カスタムメッセージ")]

何。ありがとうございました!

+0

あなたも 'FormatErrorMessage'をオーバーライドする必要があります。https:// MSDNをMicrosoft.com/ja-jp/library/cc668224.aspx –

答えて

0

エラーメッセージのフォーマットをカスタマイズすることを意図している場合、あなたはこのような属性を定義することができます。

public class RequiredInt32 : ValidationAttribute 
{ 
    private const string _customFormat = "{0} is not valid"; 

    private string _fieldName; 

    public RequiredInt32(string fieldName) 
     : base(_customFormat) 
    { 
     _fieldName = fieldName; 
    } 

    public override string FormatErrorMessage(string name) 
    { 
     return string.Format(ErrorMessageString, name); 
    } 

    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     if (value != null) 
     { 
      if (Convert.ToInt32(value) == 0) 
      { 
       return new ValidationResult(FormatErrorMessage(_fieldName)); 
      } 
     } 
     return ValidationResult.Success; 
    } 
} 

使用法:

[RequiredInt32("MyField")] 
public int NumberProperty {get;set;} 
関連する問題