In MVC Razor stelle ich das aktuelle Datum wie folgt in die Datenbank.
model.Returndate = DateTime.Now.Date.ToShortDateString();
Da das Datenbankfeld ein Datetime-Datentyp ist und ich das aktuelle Datum in das Zeichenfolgenformat konvertiere, funktioniert dies nicht. Wie kann ich das tun? Ich mache das String-Format, weil ich das Datum im Format MM / TT / JJJJ und nicht im Format MM / TT / JJJJ HH: MM: SS-Zeitformat haben möchte.
BEARBEITEN:
In der Steuerung habe ich
var model = new ViewModel();
model.ReturnDate = DateTime.Now;
return PartialView("PartialView", model);
In der Teilansicht habe ich
@Html.EditorFor(model => model.Returndate)
Hier wird das Datum als Datum und Uhrzeit zusammen angezeigt. Ich möchte, dass nur das Datum angezeigt wird. Nicht die Zeit. Ich hoffe, diese Bearbeitung erklärt besser.
c#
asp.net-mvc
asp.net-mvc-3
datetime
ZVenue
quelle
quelle
ToString("mm/dd/yyyy");
, um genau zu sehen, was Sie wollen.DateTime
. Sie führen die Formatierung der Zeichenfolge im OUTPUT durch ... Formatieren Sie sie nur für den End-Viewer.Antworten:
Wenn der Spaltentyp in SQL DateTime ist, wird eine Zeit gespeichert, zu der Sie eine übergeben oder nicht.
Es ist besser, das Datum richtig zu speichern:
und formatieren Sie es dann, wenn Sie es anzeigen müssen:
Oder wenn Sie EditorFor verwenden:
oder
Um Ihrem Modell eine Eigenschaft hinzuzufügen, fügen Sie diesen Code hinzu:
Dann in Ihrer PartialView:
BEARBEITEN:
Hallo Leute, möchte für diese Antwort nur klarstellen, dass ich mit "Wenn Sie EditorFor verwenden" eine EditorFor-Vorlage für den Werttyp benötige, den Sie darstellen möchten.
Editor-Vorlagen sind eine coole Möglichkeit, sich wiederholende Steuerelemente in MVC zu verwalten:
http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/
Sie können sie für naive Typen wie String verwenden, wie ich es oben getan habe. Sie eignen sich jedoch besonders gut, um eine Reihe von Eingabefeldern für einen komplizierteren Datentyp zu erstellen.
quelle
Ich musste mich nur selbst mit diesem Szenario befassen - habe einen wirklich einfachen Weg gefunden, dies zu tun. Kommentieren Sie einfach Ihre Immobilie im Modell wie folgt:
Dadurch wird auch die Zeitschaltfläche vor der Datumsauswahl ausgeblendet.
Entschuldigung, wenn diese Antwort etwas spät ist;)
quelle
Dies funktioniert, wenn Sie in einer TextBox anzeigen möchten:
quelle
Das Datum / die Uhrzeit in der Datumsbasis ist überhaupt keine formatierte Version. Es wird nur das Datum / die Uhrzeit selbst sein. Anders ist es, wie Sie dieses Datum und diese Uhrzeit anzeigen , wenn Sie den Wert aus der Datenbank extrahieren. Ich vermute sehr, dass Sie wirklich nur wollen:
oder möglicherweise
Ja, wenn Sie in der Datenbank suchen mithilfe von SQL Server Studios oder was auch immer, werden Sie jetzt Mitternacht sehen - aber das ist irrelevant, und wenn Sie das Datum der Datenbank holen und es an einen Benutzer anzuzeigen, dann können Sie das entsprechende Format anwenden .
BEARBEITEN: In Bezug auf Ihre bearbeitete Frage liegt das Problem nicht beim Modell, sondern bei der Angabe der Ansicht. Sie sollten etwas verwenden wie:
Wo
d
ist der Standard-Datums- und Zeitformatbezeichner für das kurze Datumsmuster (was bedeutet, dass die aktuellen kulturellen Einstellungen berücksichtigt werden)?Das habe ich wiederholt gesagt: Wenn Sie dem Benutzer Datum und Uhrzeit anzeigen , ist dies die Zeit, um es als Datum ohne Uhrzeit zu formatieren.
BEARBEITEN: Wenn dies nicht funktioniert, sollte es eine Möglichkeit geben, das Modell oder die Ansicht mit einer Formatzeichenfolge zu dekorieren - oder so ähnlich. Ich bin nicht wirklich eine MVC-Person, aber es scheint , dass es einen guten Weg geben sollte, dies deklarativ zu tun ...
quelle
Sie können Ihr ViewModel wie folgt ändern:
quelle
Sie können das benutzerdefinierte Datums- und Uhrzeitformat
ToString
wie folgt anwenden :Weitere Informationen zum
DateTime.ToString
Formatmuster finden Sie hier und hier .Bearbeiten: Nach der Bearbeitung Ihrer Frage sollten Sie genau wie von anderen vorgeschlagen das Datumsformat in Ihrer Ansicht anwenden:
quelle
model.Returndate.ToString("mm/dd/yyyy")
?Ich bin mir in Razor nicht sicher, aber in ASPX tun Sie Folgendes:
Es muss etwas Ähnliches in Razor geben. Hoffentlich hilft das jemandem.
quelle
Wenn Sie eine for-Schleife wie die folgende haben.
Ändern Sie @ item.StartDate in @ item.StartDate.Value.ToShortDateString ()
Dadurch wird die Zeit entfernt, falls Sie Ihre Eigenschaft im Modell nicht wie in meinem Fall mit Anmerkungen versehen können.
quelle
Fügen Sie Datenanmerkungen wie DisplayFormat und ApplyFormatInEditMode hinzu, um die gewünschte Ausgabe zu erhalten.
[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }
Jetzt wird Ihr Rechnungsdatum wie angezeigt.
quelle
Sie können einfach die datetime konvertieren. Etwas wie:
quelle
Ich hatte einige Probleme mit den anderen Lösungen auf dieser Seite und dachte, ich würde das hier lesen.
Sie müssen also nur "{0: d}" in den zweiten Parameter einfügen und können loslegen.
quelle