Validierung von DateTimePicker funktioniert nicht richtig
Zunächst habe ich diese Lösung für mein Problem verwendet:jQuery Datumsüberprüfung MVC 4 .Net 4.5.1 UK Datum "muss ein Datum sein" Fehler
Wenn ich ein gültiges Modell poste, funktioniert alles einwandfrei.Wenn ich ein ungültiges Modell ohne Datum poste, gilt dies auch für die Gültigkeit.Aber wenn ich ein ungültiges Modell mit Datum poste, kommt es ausnahmsweise dazu, dass die Objektreferenz nicht auf eine Instanz eines Objekts festgelegt ist.Hier ist das Datumsfeld im Modell:
[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy HH:mm}")]
[Display(Name = "Date")]
public DateTime Date{ get; set; }
Hier ist Code in create.cshtml
<div class="form-group">
@Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Date, "{0:dd.MM.yyyy HH:mm}", new { @Value = ViewBag.Date, @class = "form-control", @id = "datetimepicker" })
@Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })
</div>
</div>
Javasript in layout.cshtml:
<script type="text/javascript">
jQuery('#datetimepicker').datetimepicker({
format: 'd.m.Y H:i',
lang: 'cs',
dayOfWeekStart: 1
});
Und hier wird die jQuery-Datumsüberprüfung überarbeitet:
date: function (value, element) {
$.culture = Globalize.culture("cs-CZ");
var date = Globalize.parseDate(value, "dd.MM.yyyy HH:mm","cs-CZ");
return this.optional(element) ||
!/Invalid|NaN/.test(new Date(date).toString());
},
BEARBEITEN also habe ich es endlich zum Laufen gebracht, indem ich die Datumsfunktion in einen regulären Ausdruck wie diesen geändert habe:
return value.match(/^(0?[1-9]|[12][0-9]|3[0-1])[/., -](0?[1-9]|1[0-2])[/., -](19|20)?\d{2} ([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/);