2013-07-18 36 views
2

我有一個必需的消息,我想給它一個自定義的消息,因爲默認的不是很好。該消息必須來自一個資源文件中,參數化的,所以在資源文件中的信息將是類似給RequiredAttribute一個自定義消息

"The {0} field is required." 

我需要能夠與我的東西提供給替換{0}。我知道默認的消息是類似的,但問題是我最終的東西像

"The RequiredReason field is required." 

當我要的是

"The required reason field is required". 

任何想法,這可怎麼辦呢?

回答

1

您可以創建自己的RequiredAttribute,然後覆蓋FormatErrorMessage方法以使用參數名稱,或者甚至通過構造函數傳遞要設置的類的參數。

喜歡的東西:

public class ParameterisedRequiredAttribute : RequiredAttribute 
    { 
     private string[] _replacements { get; set; } 

     public ParameterisedRequiredAttribute(params string[] replacements) 
     { 
      _replacements = replacements; 

      ErrorMessageResourceName = ErrorMessagesErrors.SpecificFieldRequired; 
      ErrorMessageResourceType = typeof(ErrorMessages); 
     } 

     public override string FormatErrorMessage(string name) 
     { 
      return string.Format(ErrorMessageString, (object[])_replacements); 
     } 
    }