Nach einigem Graben und ich landete Einstellung Thread‚s Current Wert haben Culture (‚en-US‘) in der Steuerung Aktionsmethode:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Hier sind einige andere Optionen, wenn Sie diese Einstellung für jede Ansicht festlegen möchten.
Informationen zum CurrentCultureImmobilienwert:
Das CultureInfo- Objekt, das von dieser Eigenschaft zurückgegeben wird, bestimmt zusammen mit den zugehörigen Objekten das Standardformat für Datum, Uhrzeit , Zahlen, Währungswerte, Sortierreihenfolge von Text, Groß- und Kleinschreibung und Zeichenfolgenvergleiche.
Quelle: MSDN CurrentCulture
Hinweis: Die vorherige CurrentCultureEigenschafteneinstellung ist wahrscheinlich optional, wenn der Controller bereits mit CultureInfo("en-US")oder ähnlich ausgeführt wird, wenn das Datumsformat vorliegt "MM/dd/yyyy".
Fügen Sie nach dem Festlegen der CurrentCultureEigenschaft einen Codeblock hinzu, um das Datum in das "M/d/yyyy"Format in der Ansicht zu konvertieren :
@{ //code block
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
//alternative way below
//shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("d");
}
}
@shortDateLocalFormat
Oben ist die @shortDateLocalFormatVariable mit ToString("M/d/yyyy")Werken formatiert . Wenn ToString("MM/dd/yyyy")es verwendet wird, wie ich es zuerst getan habe, haben Sie am Ende das führende Null-Problem . Auch wie von Tommy empfohlen ToString("d")funktioniert auch. "d"Steht eigentlich für "Short Date Pattern" und kann auch mit verschiedenen Kultur- / Sprachformaten verwendet werden.
Ich denke, der Codeblock von oben kann auch durch eine coole Hilfsmethode oder ähnliches ersetzt werden.
Beispielsweise
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
kann mit diesem Hilfsaufruf verwendet werden
@DateFormatter(Model.AuditDate)
Update , ich habe herausgefunden, dass es eine alternative Möglichkeit gibt, dasselbe zu tun, wenn die DateTime.ToString- Methode (String, IFormatProvider) verwendet wird. Wenn dieses Verfahren verwendet wird , dann gibt es keinen Grund zur Verwendung Thread‚s - CurrentCultureEigenschaft. Das CultureInfo("en-US")wird als zweites Argument -> IFormatProvider an die DateTime.ToString(String, IFormatProvider)Methode übergeben.
Modifizierte Hilfsmethode:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET Geige
No overload for method 'ToString' takes 1 arguments