Ich habe Probleme, den einzigen Datumsteil einer DateTime mithilfe von TextBoxFor <,> (Ausdruck, htmlAttributes) in einem Textfeld anzuzeigen.
Das Modell basiert auf Linq2SQL, das Feld ist eine DateTime in SQL und im Entitätsmodell.
Gescheitert:
<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>
Dieser Trick scheint veraltet zu sein, jeder Zeichenfolgenwert im Objekt htmlAttribute wird ignoriert.
Gescheitert:
[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }
Ich möchte nur den Datumsteil in der Detail- / Bearbeitungsansicht ohne den Teil "00:00:00" speichern und anzeigen.
asp.net-mvc
Kronos
quelle
quelle
@Html.EditorFor(m => m.IssueDate)
und die Formatierung des Modells wird als angewendet,[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
aber das Datum wird weiterhin als01/01/0001 12:00:00 AM
MVC4 hat dieses Problem durch Hinzufügen einer neuen
TextBoxFor
Überladung gelöst , die einen Parameter für das Zeichenfolgenformat verwendet. Sie können dies jetzt einfach tun:Es gibt auch eine Überladung, die HTML-Attribute akzeptiert, sodass Sie die CSS-Klasse festlegen, Datepicker verkabeln können usw.:
quelle
@Html.TextBoxFor(m => m.SomeDate, "{0:MM/dd/yyyy}", new { @id="datepicker" })
[DisplayFormat]
Attribut des Modells ignoriert . Ich bin froh, dass es in TextBoxFor zumindest eine Überschreibung gibt (und dass Sie mich darauf aufmerksam gemacht haben).@Html.TextBoxFor(model => model.CDate, "{0:dd.MM.yyyy}")
aber auf httpPost bekomme ich Daten wie MM.dd.yyyy. Wie kann man das lösen?input[type=date]
Spezifikation erfordern ein"{0:yyyy-MM-dd}"
Format.quelle
@Value = (Model.DateBecamePermanentResident == null ? "" : Model.DateBecamePermanentResident.Value.ToString("dd.MM.yyyy"))
Oder verwenden Sie die untypisierten Helfer:
quelle
@Html.TextBoxFor(model => model.EndDate, "{0:d}", new { type = "date" })
Das hat bei mir funktioniert.
quelle
Haben Sie keine Angst vor der Verwendung von rohem HTML.
quelle
TextBoxFor
oderEditorFor
formatieren. Siehe meine Frage: TextBoxFor Helfer mischt Tag und Monat in DatenTL; DR;
Die Bewerbung
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
hat bei mir nicht geklappt!Erläuterung:
Um eine Datumseigenschaft Ihres Modells anzuzeigen, verwenden Sie
Html.TextBoxFor
:Datumseigenschaft Ihrer Modellklasse:
Auf der Modellseite wird nichts anderes benötigt.
In Razor machst du:
Erläuterung:
Das Datum eines HTML-
input
Elements vom Typdate
muss in Bezug auf ISO8601 formatiert sein. Dies ist:yyyy-MM-dd
Ich habe die Erfahrung gemacht, dass die Sprache nicht durch den
Accept-Language
Header bestimmt wird , sondern entweder durch die Anzeigesprache des Browsers oder durch die Betriebssystemsprache des Betriebssystems.quelle
Sie können auch die HTML 5-Attribute verwenden, indem Sie diese Datenanmerkung anwenden:
Das Problem ist jedoch, dass dies eine browserspezifische Datumsauswahl für HTML 5-Browser ermöglicht. Sie benötigen weiterhin eine eigene Datumsauswahl für Browser ohne Unterstützung, und dann müssen Sie sicherstellen, dass Ihre Datumsauswahl nicht zusätzlich zu der eines Browsers angezeigt wird (Modernizr kann dies problemlos ausführen), oder die Browser ausblenden, wenn dies der Fall ist (kompliziert und ich) Ich weiß nicht, wie zuverlässig die Methoden waren, die ich gesehen habe.
Am Ende habe ich mich für Alex entschieden, weil meine aktuelle Umgebung kein Modernizr hat, aber wenn es so wäre, hätte ich das verwendet, um meine Datenauswahl nur bedingt anzuzeigen, wenn der Browser noch keine unterstützt hätte.
quelle
Für mich musste ich das beibehalten,
TextboxFor()
da durch die VerwendungEditorFor()
der Eingabetyp auf den neuesten Stand gebracht wurde. In Chrome wird eine integrierte Datumsauswahl hinzugefügt, die den bereits verwendeten jQuery-Datums-Picker vermasselt hat. Um weiterhinTextboxFor()
AND zu verwenden und nur das Datum auszugeben, können Sie Folgendes tun:quelle
Das DisplayFormat-Attribut funktionierte beim ersten Laden in keiner Form für mich. Ich habe stattdessen eine EditorTemplate erstellt:
quelle
Der Vorlageneditor funktioniert nur zu Anzeigezwecken. Wenn Sie denselben Editor verwenden (was sinnvoll ist, da es sich um einen Editor handelt) und einen Wert wie den 31.01.2010 angegeben haben, wird eine Fehlermeldung angezeigt, dass das Format ungültig ist.
quelle
Ich verwende Globalize, arbeite also mit vielen Datumsformaten und verwende Folgendes:
Dadurch wird das Datumsformat automatisch an die Ländereinstellungen des Browsers angepasst.
quelle
Beachten Sie, dass die Anzeige von der Kultur abhängt. Und obwohl in den meisten Fällen alle anderen Antworten richtig sind, hat es bei mir nicht funktioniert. Kulturprobleme verursachen auch andere Probleme mit jQuery Datepicker, falls beigefügt.
Wenn Sie das Format-Escape
/
auf folgende Weise erzwingen möchten :Wenn nicht für mich entkommen, zeigt es
08-01-2010
vs. erwartet08/01/2010
.Auch wenn jQuery datepicker nicht entkommen ist, wählt es ein anderes defaultDate aus, in meinem Fall war es
May 10, 2012
.quelle
Wenn Sie die Bootstrap- Datumsauswahl verwenden, können Sie das Attribut data_date_format wie folgt hinzufügen .
quelle
// Datums- und Uhrzeitanzeigen im datePicker sind 24.11.2011 00:00:00 Uhr
// Sie können dies nach Leerzeichen aufteilen und den Wert nur auf Datum setzen
Skript:
Markup:
Hoffe das hilft ..
quelle
Sicher können Sie Html.EditorFor verwenden. Wenn Sie jedoch TextBoxFor verwenden und das Format aus dem DisplayFormat-Attribut verwenden möchten, können Sie es folgendermaßen verwenden:
oder nächste Erweiterung erstellen:
quelle
Fügen Sie einfach neben Ihrem Modell hinzu.
quelle
Bei Verwendung von Tag-Hilfsprogrammen in ASP.NET Core muss das Format im ISO-Format angegeben werden. Wenn nicht als solche angegeben, werden gebundene Eingabedaten nicht richtig angezeigt und als MM / TT / JJJJ ohne Wert angezeigt.
Modell:
Aussicht:
Das Format kann auch in der Ansicht mithilfe des Attributs asp-format angegeben werden.
Der resultierende HTML-Code sieht folgendermaßen aus:
quelle
Sie können den folgenden Code verwenden, um die Zeit im HH: mm-Format zu drucken. In meinem Fall ist der Eigenschaftstyp TimeSpan. Der Wert kommt also im HH: mm: tt-Format, aber ich muss ihn im obigen Format anzeigen, d. H. HH: mm
quelle
Wenn Sie darauf bestehen, das zu verwenden
[DisplayFormat]
, MVC4 jedoch nicht verwenden, können Sie Folgendes verwenden:quelle