4
我工作的一個多語言網站,我要本地化大多數ValidationAttribute這樣的驗證錯誤消息爲[Requried]
本地化錯誤消息在ASP.NET MVC 2(默認屬性驗證)
我知道可以這樣做Phil Haack已經顯示在這個article。
[Required(ErrorMessageResourceType = typeof(Resources),
ErrorMessageResourceName = "Required")]
,但我想以自定義錯誤消息,我做我的自定義驗證的方式屬性在這裏:
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property,
AllowMultiple = false,
Inherited = true)]
public sealed class ValidateminRequiredNonalphanumericCharactersAttribute
: ValidationAttribute
{
private const string _defaultErrorMessage = // Message From Resource Here (i will be using two variables in this message)
private readonly int _minnonalphanumericCharactersCounter = Membership.Provider.MinRequiredNonAlphanumericCharacters;
public ValidateminRequiredNonalphanumericCharactersAttribute()
: base(_defaultErrorMessage)
{
}
public override string FormatErrorMessage(string name)
{
return String.Format(CultureInfo.CurrentUICulture,
ErrorMessageString, name, _minnonalphanumericCharactersCounter);
}
public override bool IsValid(object value)
{
string valueAsString = value as string;
if (String.IsNullOrEmpty(valueAsString))
return false;
int nonalphanumericCharactersCounter = 0;
char[] password = valueAsString.ToCharArray();
foreach (char c in password)
{
if (!char.IsNumber(c) && !char.IsLetter(c))
nonalphanumericCharactersCounter++;
}
return (nonalphanumericCharactersCounter >= _minnonalphanumericCharactersCounter);
}
}
什麼想法?
當你指出我這個答案後,我複製了你的代碼並將它包含在我的應用程序中,然後發現它有一個令人討厭的錯誤(花了我幾個小時才弄清楚爲什麼用我的自定義屬性進行驗證是奇怪的。該誤差是在isValid()方法此方法應該包含這樣的:\t \t \t如果(值== NULL || String.IsNullOrWhiteSpace(value.ToString())){ \t \t \t \t返回假; \t \t \t } \t \t \t return true; – mare 2011-02-02 01:25:10
請改正原因。重點是刪除字符串轉換導致其各種值類型的問題。 – mare 2011-02-02 01:25:41
@mare感謝您修復我的錯誤代碼,,,我想我沒有這個問題bcoz我只用原始類型使用我的Validator。 – 2011-02-02 11:13:47