您可能會感興趣following blog post。抽出來:
public class EmailAttribute : RegularExpressionAttribute, IClientValidatable
{
public EmailAttribute()
: base(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")
{
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var errorMessage = FormatErrorMessage(metadata.GetDisplayName());
yield return new EmailValidationRule(errorMessage);
}
}
public class EmailValidationRule : ModelClientValidationRule
{
public EmailValidationRule(string errorMessage)
{
ErrorMessage = errorMessage;
ValidationType = "email";
}
}
和使用:
public class Person
{
[Required(ErrorMessage = "{0} is required.")]
[Email(ErrorMessage = "{0} appears to be invalid.")]
public string Name { get; set; }
}
而這幾乎是所有。因爲這個自定義屬性實現了IClientValidatable,所以客戶端驗證也會起作用。
當然,如果在這個例子中使用的正則表達式不適合你,毫不猶豫地改進它。
該正則表達式拒絕許多有效的電子郵件地址。 – CodesInChaos 2011-03-02 21:41:05