using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; using System.Text.RegularExpressions; using System.Text; using Sleis.Models; using System.Web.Mvc; namespace Sleis.Validation.Attribute { public class DateValidation : ValidationAttribute { public DateValidation() { if(String.IsNullOrEmpty(base.ErrorMessage)) { base.ErrorMessage = Constants.DateFormatErrorMessage; } } public override bool IsValid(object value) { //don't worry about being required. let required attribute handle that if (value == null) { return true; } /*Removing reged validation since .net converts datetime to its own translation.... using datetime.parseinstead Regex regEx = new Regex(Pattern()); return regEx.IsMatch(value.ToString()); * */ DateTime date = new DateTime(); return DateTime.TryParse(value.ToString(), out date); } public static string Pattern() { return Constants.DateRegEx; } } public class DateValidator : DataAnnotationsModelValidator { #region Fields private readonly string _errorMessage; #endregion Fields #region Ctors /// /// Initializes a new instance of the class. /// /// The metadata. /// The context. /// The attribute. public DateValidator(ModelMetadata metadata, ControllerContext context, DateValidation attribute) : base(metadata, context, attribute) { this._errorMessage = attribute.ErrorMessage; } #endregion Ctors #region Methods /// /// Retrieves a collection of client validation rules. /// /// A collection of client validation rules. public override IEnumerable GetClientValidationRules() { var rule = new ModelClientValidationRegexRule(this._errorMessage, DateValidation.Pattern()); return new[] { rule }; } #endregion Methods } }