本文體驗自定義錯誤資訊。
系統預設的錯誤資訊
在"MVC驗證02-自定義驗證規則、郵件驗證"中,我們自定義了一個驗證Email的類。如果輸入郵件格式錯誤,出現系統預設的報錯資訊。
通過ErrorMessage來修改錯誤資訊
[Email(ErrorMessage = "Email格式錯誤")]
[Display(Name = "郵件")]
public string Email { get; set; }
在自定義驗證特性中重寫FormatErrorMessage方法
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
using System.Web.Mvc;
namespace MvcValidation.Extension
{
public sealed class EmailAttribute : ValidationAttribute, IClientValidatable
{
public const string reg = @"^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]+$";
public EmailAttribute()
{
}
//重寫基類方法
public override bool IsValid(object value)
{
if (value == null)
return true;
if (value is string)
{
Regex regEx = new Regex(reg);
return regEx.IsMatch(value.ToString());
}
return false;
}
public System.Collections.Generic.IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule rule = new ModelClientValidationRule
{
ValidationType = "email",
ErrorMessage = FormatErrorMessage(metadata.GetDisplayName())
};
yield return rule;
}
/// <summary>
/// 格式化錯誤資訊
/// </summary>
/// <param name="name">屬性名</param>
/// <returns></returns>
public override string FormatErrorMessage(string name)
{
return this.ErrorMessage ?? string.Format("{0}屬性沒有輸入正確的Email", name);
}
}
}