Anotación de validación de fecha mayor o igual a hoy en MVC3

¿Alguien ha visto una anotación de datos de MVC3 para la validación de la fecha que requiere que una sola fecha seleccionada sea igual o mayor que la fecha actual?

Si ya hay un complemento de terceros en eso también es genial. Ya estoy usando DataAnnotationsExtensions pero no ofrece lo que estoy buscando.

No parece haber ninguna referencia de esto en. Entonces, espero que alguien ya haya resuelto esto antes de intentar reinventar la rueda y escribir mi propio validador personalizado.

He intentadoRange pero eso requiere 2 fechas y ambas tienen que ser constantes en formato de cadena como[Range(typeof(DateTime), "1/1/2011", "1/1/2016")] pero eso no ayuda. Y las DataAnnotationsExtensionsMin validador solo aceptaint ydouble

Actualizar Resuelto

Gracias a @BuildStarted, esto es lo que terminé y funciona muy bien en el lado del servidor y ahora en el lado del cliente con mi script

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace Web.Models.Validation {

    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public sealed class DateMustBeEqualOrGreaterThanCurrentDateValidation : ValidationAttribute, IClientValidatable {

        private const string DefaultErrorMessage = "Date selected {0} must be on or after today";

        public DateMustBeEqualOrGreaterThanCurrentDateValidation()
            : base(DefaultErrorMessage) {
        }

        public override string FormatErrorMessage(string name) {
            return string.Format(DefaultErrorMessage, name);
        }  

        protected override ValidationResult IsValid(object value, ValidationContext validationContext) {
            var dateEntered = (DateTime)value;
            if (dateEntered < DateTime.Today) {
                var message = FormatErrorMessage(dateEntered.ToShortDateString());
                return new ValidationResult(message);
            }
            return null;
        }

        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) {
            var rule = new ModelClientCustomDateValidationRule(FormatErrorMessage(metadata.DisplayName));
            yield return rule;
       }
    }

    public sealed class ModelClientCustomDateValidationRule : ModelClientValidationRule {

        public ModelClientCustomDateValidationRule(string errorMessage) {
            ErrorMessage = errorMessage;
            ValidationType = "datemustbeequalorgreaterthancurrentdate";
        }
    }
}

Y en mi modelo

[Required]
[DateMustBeEqualOrGreaterThanCurrentDate]
public DateTime SomeDate { get; set; }

El script del lado del cliente

/// <reference path="jquery-1.7.2.js" />

jQuery.validator.addMethod("datemustbeequalorgreaterthancurrentdate", function (value, element, param) {
    var someDate = $("#SomeDate").val();
    var today;
    var currentDate = new Date();
    var year = currentDate.getYear();
    var month = currentDate.getMonth() + 1;  // added +1 because javascript counts month from 0
    var day = currentDate.getDate();
    var hours = currentDate.getHours();
    var minutes = currentDate.getMinutes();
    var seconds = currentDate.getSeconds();

    today = month + '/' + day + '/' + year + '  ' + hours + '.' + minutes + '.' + seconds;

    if (someDate < today) {
        return false;
    }
    return true;
});

jQuery.validator.unobtrusive.adapters.addBool("datemustbeequalorgreaterthancurrentdate");

Respuestas a la pregunta(3)

Su respuesta a la pregunta