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"?
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Spezifikationen für HTML5-Datum-picker einen Staat, der das Datum muss im format
yyyy-MM-dd
(ISO-format). Dies bedeutet, dass SieDisplayFormatAttribute
mussAlternativ können Sie manuell hinzufügen, das format mit
Späteren option ermöglicht es Ihnen, um die
DataFormatString = "{0:dd/MM/yyyy}")
für die Verwendung in der@Html.DisplayFor()
[DisplayFormat]
Ursachen jQuery zurücksetzen das Feld und geben Sie einen ungültigen Wert Meldung in der Konsole. Formatierung inTextBoxFor
löst dieser Fehler (und erlaubt es mir, meine Maske plugin), aber trotzdem zeigt das Datum im ISO-format. Auf domReady, Verschiebe ich die Werte um die Verwendung der amerikanischen Formatierung.Sorry, ich verstehe nicht, Ihren Kommentar.
[DisplayFormat]
und jQuery sind nicht miteinander verwandt in sowieso (es wird kein reset-Wert), und diese Frage/Antwort bezieht sich auf die Browser HTML-5-datepicker-Implementierung (es hat nichts zu tun mit einer Maske plugin). Wenn Ihr ein Problem hat, dann eine neue Frage stellen mit den entsprechenden DatenJa, wahrscheinlich zu viel für nebenbei in einem Kommentar. Ich habe keinen besseren Weg, um Wort für eine Frage, though. jQuery wird verwendet in ASP.NET MVC-Projekten für die Validierung, und ich nehme an, dass ist, was ist ausgeflippt. Konsole sagt nur der Fehler stammt jquery-version.js. Mach dir keine sorgen.
Ich weiß, das ist eine alte Frage, aber ich hoffe auf eine Antwort und es fühlt sich dumm schreiben eine formelle Frage zu diesem...
ApplyFormatInEditMode = true
genutzt, um das format in@Html.EditorFor()
Recht? dann howcome ich bekomme immer noch diesen Fehler (der in der Frage) in der Konsole, wenn Sie versuchen zu füllen@Html.EditorFor()
mit einemDateTime
und[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
.... Irgendwelche Ideen? oder bin ich verwirrendEdit mode
mit etwas anderem?Wenn seine nicht funktioniert für Sie, dann kann ich nur davon ausgehen, dass Sie anderen code, oder etwas, das Ihr nicht uns mitzuteilen, das das Problem verursacht.
InformationsquelleAutor
Können Sie die InputTagHelper.Format
https://docs.asp.net/projects/api/en/latest/autoapi/Microsoft/AspNetCore/Mvc/TagHelpers/InputTagHelper/#prop-Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.Format
InformationsquelleAutor M. Ruiz
Könnte das Problem werden, von dem Typ="Datum". Das war meine situation sowieso. Gearbeitet, sobald es geändert wurde, um type="text". Wenn die Schnittstelle ist mit einem MVC-wrapper, die Sie benötigen, zu ersetzen oder legen Sie die html-Attribut entsprechend.
InformationsquelleAutor Petre Ionescu
Möchte ich hervorheben, etwas in die Antwort hier.
Wenn Sie eine Anwendung erstellen, Globalisierung und Lokalisierung dann der Methode übergeben, die in einem format mit einem Html-helper wird besser sein. Sie können auch einfach verwenden "EditorFor" und übergeben Sie die nötigen id oder Klasse für datepicker.
InformationsquelleAutor user3357031
Legen Sie die
type
Attribut text.InformationsquelleAutor devlin carnate