Unauffällige Validierung für Inline-Datepicker funktioniert nicht, funktioniert auch für Nicht-Inline-Datepicker

Ich habe den Datepicker von jquery.ui nicht verwendet, da ich eine ganze Woche und mehrere Daten unter verschiedenen Bedingungen auswählen mussteKeith Woods Datumsauswahl in einer EditorTemplate für meine Datumsfelder:

    @model Nullable<DateTime>
    @{
        string name = ViewData.TemplateInfo.HtmlFieldPrefix;
        string id = name.Replace(".", "_");
        string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
    }        
    @Html.TextBox("", dt, new { @class = "datefield", @type = "date", @id = id })
    <script type="text/javascript">
        $(document).ready(function () {
            $('#@id').datepick({
                renderer: $.datepick.themeRollerRenderer,
                multiSelect: 999
            });
        });    
    </script>

Die Validierung funktioniert einwandfrei, wenn ein Textfeld verwendet wird und der Datumsauswahl-Popup angezeigt wird. Ich möchte jedoch unbedingt einen Inline-Datepicker verwenden, kann die Validierung jedoch unter folgenden Bedingungen nicht durchführen:

    @model Nullable<DateTime>
    @{
        string name = ViewData.TemplateInfo.HtmlFieldPrefix;
        string id = name.Replace(".", "_");
        string dt = Model.HasValue ? String.Format("{0:d}",(string)Model.Value.ToShortDateString()) : string.Empty;
    }

    <div class="kwdp">
    </div>
    @Html.Hidden("", dt, new { @class = "datefield", @id = id })
    <script type="text/javascript">
        $(document).ready(function () {
            $('.kwdp').datepick({
                renderer: $.datepick.themeRollerRenderer,
                multiSelect: 999
            });
        });    
    </script>

Hier ist ein Auszug meiner benutzerdefinierten clientseitigen Validierung:

    form.validate({ 
        rules:{
            StartDate: { 
                required: true, 
                dpDate: true 
            }
        },
        messages: {
            StartDate: 'Please enter a valid date (dd-mm-yyyy)'
        }
    });

Und hier ist die Definition des DateTime-Feldes in meiner Datenklasse:

    [Required]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
    public Nullable<DateTime> StartDate { get; set; }

Ich verstehe, dass ich ein onSelect für den Datumsauswahlpunkt hinzufügen sollte, um das ausgeblendete Feld mit Datumsangaben zu füllen, aber unabhängig davon sollte eine Fehlermeldung angezeigt werden, wenn der Wert des ausgeblendeten Felds leer ist, aber nicht überprüft wird. Das HTML-Markup wird wie folgt gerendert:

    <input name="StartDate" class="datefield" id="StartDate" type="hidden" data-val-required="The StartDate field is required." data-val="true" data-val-date="The field StartDate must be a date." value=""/>

Ich benutze folgende Bibliotheken:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>    
    <script src="@Url.Content("~/Scripts/datepick/jquery.datepick.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/datepick/jquery.datepick.ext.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/datepick/jquery.datepick.validation.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.ui.datepicker.validation.min.js")" type="text/javascript"></script>

ich fandeine ähnliche unbeantwortete Frage Das sieht so aus, als ob der Entwickler das gleiche Problem hat, aber keine veröffentlichte Lösung. Irgendwelche Ideen, wo ich falsch liege?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage