Ich möchte ein Datum im deutschen Datumsformat (dd.MM.yyyy) aus dem Modell in einer MVC-App anzeigen und dem Benutzer einen Datumsauswahl geben. Ich habe viele der Fragen, die zu diesem Thema bereits beantwortet wurden, durchgenommen, kann sie aber immer noch nicht zum Laufen bringen. Ich habe es in Firefox und Edge probiert, mit denselben Ergebnissen für jeden Schritt.MVC EditorFor Datum nicht angezeigt Wert
Schritt 1:
Modell:
private DateTime? inbetriebnahmedatum;
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
Ausblick:
@Html.EditorFor(model => model.Inbetriebnahmedatum, new { htmlAttributes = new { @class = "form-control", placeholder = "Datum eingeben" } })
Ergebnis: Keine Datumsauswahl wird die Zeit angezeigt, Validierungsfehler
Schritt 2: Hinzugefügt Datentyp
Modell:
private DateTime? inbetriebnahmedatum;
[DataType(DataType.Date)]
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
Ausblick: unverändert
Schritt 3: Displayformat hinzugefügt, Datentyp entfernt
Modell:
private DateTime? inbetriebnahmedatum;
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
Ausblick: unverändert
Ergebnis: Datum angezeigt, aber keine Datumsauswahl und Validierungsfehler
Schritt 4: Zu Web.config wurde u Culture hinzugefügt
Web.config-
<globalization uiCulture="de-DE" culture="de-DE" />
Schritt 5: Added Datentyp wieder
Modell:
private DateTime? inbetriebnahmedatum;
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")]
public DateTime? Inbetriebnahmedatum
{
get { return inbetriebnahmedatum; }
set { inbetriebnahmedatum = value; OnPropertyChanged(new PropertyChangedEventArgs("Inbetriebnahmedatum")); }
}
Ergebnis: Wert nicht geladen, picker zeigt
Der 'DataFormatString' muss sei 'yyyy-MM-dd' (ISO-Format) beim Erzeugen des Browsers HTML-5 datepicker, und dann wird es in der Benutzerkultur angezeigt, was der entscheidende Punkt ist, es zu benutzen. –
Verwenden Sie einen jQuery-Datepicker (z. B. jQueryUI), aber dann müssen Sie auch den '$ .validator' für die clientseitige Validierung neu konfigurieren. –
@StephenMuecke: Du hast Recht, jetzt klappt es - Danke. –