Thursday, November 29, 2012

validating model based on MetadataType in MVC3



using System.ComponentModel.DataAnnotations;

[MetadataType(typeof(EmployeeMetadata))]
    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string Phone { get; set; }
    }


    public class EmployeeMetadata
    {
        [StringLength(255, ErrorMessage = "Name is required"), Required]
        [Display(Name = "Name")]
        public string Name { get; set; }

        [Required]
        [RegularExpression(@"^([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})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
        [DataType(DataType.EmailAddress)]
        [Display(Name = "Email")]
        public object Email { get; set; }

        [Required]
        //[StringLength(12, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public object Password { get; set; }

        [Required]
        [RegularExpression(@"\d+", ErrorMessage = "Please enter valid phone number.")]
        [Display(Name = "Phone")]
        public object Phone { get; set; }
    }