tipo no anulable 'System.DateTime', ASP.NET MVC

Tengo una página de registro, y debido a problemas de contenido, tenemos que solicitar y hacer cumplir los solicitantes que dan una fecha de nacimiento. Por lo tanto, es lógico que este campo no pueda ser nulo.

Estoy usando jQuery para marcar con marca de agua el cuadro de texto para decirles que pueden hacer clic en él y obtener un objeto Calendario de la interfaz de usuario de jQuery para elegir la fecha. Elegir la fecha funciona bien, este no es el problema.

En las pruebas, si intento enviar el formulario sin elegir la fecha, aparece el siguiente error ...

The parameters dictionary contains a null entry for parameter 'birthdate' of non-nullable type 'System.DateTime' for method 'System.Web.Mvc.ActionResult Register(System.String, System.String, System.String, System.String, Boolean, System.DateTime)' in 'Controllers.MembershipController'. To make a parameter optional its type should be either a reference type or a Nullable type.
Parameter name: parameters 

No quiero programar una fecha, el propósito de ser nulo es hacer cumplir la validación para que tengan que seleccionarla. ¿Algunas ideas? Incluyo mi código para las áreas responsables. Lo que es realmente frustrante es que la excepción se está lanzando antes de que alcance el método de Registro (parámetros). El ModelState.IsValid nunca se llama. He intentado intentar / atrapar bloques en vano.

        <p>             
            <label for="birthday">Birthdate:</label><br />
            <%= Html.TextBox("birthdate", "Select month, year, and date last." , new { @class = "text watermarkOn", @tabindex = "5" }) %>
        </p>

    public ActionResult Register()
    {
        return View();
    } 

    [CaptchaValidator]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Register(string name, string email, string password, string validation, bool agreement, DateTime birthdate)
    {

        // attempt to validate the registration state, and if it is invalid, 
        // populate the ruleviolations and redisplay the content with the errors.
        if (ModelState.IsValid)
        {
        }

        return View();
    }

    private bool ValidateRegistration(string name, string email, string password, string validation, DateTime birthdate)
    {
        if (String.IsNullOrEmpty(name))
        {
            ModelState.AddModelError("name", "You must specify a name.");
        }
        if (String.IsNullOrEmpty(email))
        {
            ModelState.AddModelError("email", "You must specify an email address.");
        }
        if (password == null || !Text.RegularExpressions.Password(password) )
        {
            ModelState.AddModelError("password",
                String.Format(System.Globalization.CultureInfo.CurrentCulture,
                     "You must specify a password of {0} or more characters, without any whitespace characters.",6));
        }
        if (!String.Equals(password, validation, StringComparison.Ordinal))
        {
            ModelState.AddModelError("_FORM", "The new password and confirmation password do not match.");
        }
        return ModelState.IsValid;
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta