typ niezawierający wartości „System.DateTime”, ASP.NET MVC

Mam stronę rejestracji, a ze względu na problemy z treścią musimy zażądać i wyegzekwować wnioskodawców podających datę urodzenia. Dlatego należy rozumieć, że to pole nie może być puste.

Używam jQuery do oznaczenia pola tekstowego, aby poinformować ich, że mogą go kliknąć i uzyskać obiekt kalendarza UI jQuery, aby wybrać datę. Wybór daty działa dobrze, to nie jest problem.

Podczas testowania, jeśli próbuję przesłać formularz bez wybrania daty, pojawia się następujący komunikat o błędzie ...

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 

Nie chcę kodować daty, ponieważ jej null ma na celu wymuszenie walidacji, tak aby musieli ją wybrać. Jakieś pomysły? Włączam mój kod do odpowiedzialnych obszarów. Bardzo frustrujące jest to, że wyjątek jest rzucany, zanim osiągnie nawet metodę Register (parametry). ModelState.IsValid nigdy się nie nazywa. Próbowałem bloków try / catch bez skutku.

        <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;
    }
}

questionAnswers(1)

yourAnswerToTheQuestion