Der angegebene Wert entspricht nicht dem erforderlichen format yyyy-MM-dd

Habe ich eine .Net MVC 5-Anwendung, die mithilfe von datenanmerkungen, Entity-Framework Jquery 2.1.3 und Jquery UI 1.11.4.

Wenn ich render ein edit-Formular mit einem input-Typ date mit dem britischen format "dd/MM/YYYY"; die folgende Fehlermeldung angezeigt, wenn die Verwendung von Google Chrome:

Den angegebenen Wert '10/10/2001' entspricht nicht dem erforderlichen format 'yyyy-MM-dd'. jquery-2.1.3.js:5317

Modell

public class MyModel
{
    [Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public string MyDate { get; set; }
}

Mark bis

<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" />

Ist der Wert korrekt in der input-Kontrolle, aber das Datum nicht angezeigt wird im browser. Ich dachte zuerst, das war ein Problem mit jQuery, wie es ist, erscheint das jQuery-Skript-Datei, aber beim testen im IE und Firefox alles funktioniert.

Ich dann davon ausgegangen, es war meine regionale Einstellung in chrome als standardmäßig Chrome denkt jeder Englisch ist in Amerika, ich habe die Ländereinstellung auf UK und immer noch das gleiche Problem angezeigt wird.

Eine einfache Lösung wäre, um das format zu ändern in meinem Modell zu universal, aber für Benutzer in Großbritannien ist dies ein wenig Fremd.

Gibt es eine Möglichkeit zu sagen, chrome, akzeptieren Datumsformat in "MM/TT/JJJJ"?

Sie wollen machen die Browser HTML5 datepicker-Umsetzung (oder verwenden Sie ein jquery-plugin)?
Ich schlage vor, Sie verwenden datepicker ui also das ISO-format an den server gesendet wird, während dd/MM/dddd konfiguriert wird, auf der client-Seite.
Ich wollte damit der browser mit der Datum-picker, so gibt es weniger eine Notwendigkeit für eine Drittanbieter-Bibliothek.
Wenn Ihr mit der browser-datepicker, benötigen Sie zum angeben des Attributs als [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyInEditMode = true)]. Der browser zeigt dann den Wert in der Browser-locale-Einstellungen, aber post zurück das ISO-format, also es wird korrekt gebunden. Aber beachten Sie, dass dies unterstützt werden nur in modernen Browsern.
Dies zu tun macht auch das Datum im universal-format bei der Verwendung von DisplayFor () - Helfer-Methode

InformationsquelleAutor Andy Clark | 2015-06-12

Schreibe einen Kommentar