Nach einigem Graben zu verwenden und ich landete Einstellung Thread
‚s CurrentCulture Wert haben CultureInfo("en-US") in der Aktionsmethode des Controllers:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
Hier ar e einige other options, wenn Sie diese Einstellung in jeder Ansicht haben möchten.
über CurrentCulture
Eigenschaftswert:
The CultureInfo object that is returned by this property, together with its associated objects, determine the default format for dates, times, numbers, currency values, the sorting order of text, casing conventions, and string comparisons.
Quelle: MSDN CurrentCulture
Hinweis: Die bisherige CurrentCulture
Eigenschaftseinstellung ist wahrscheinlich optional, wenn der Controller bereits mit CultureInfo("en-US")
oder ähnlichem ausgeführt wird, in dem das Datumsformat ist "MM/dd/yyyy"
.
Nach der CurrentCulture
Eigenschaft festlegen, fügt Codeblock das Datum "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
Oberhalb der @shortDateLocalFormat
Variable mit ToString("M/d/yyyy")
Werken formatiert ist. Wenn ToString("MM/dd/yyyy")
verwendet wird, wie ich zuerst, dann haben Sie am Ende leading zero issue. Auch wie empfohlen von TommyToString("d")
funktioniert auch. Eigentlich "d"
steht für “Short date pattern” und kann auch mit anderen Kultur/Sprache-Formaten verwendet werden.
Ich denke, der Codeblock von oben kann auch mit etwas cool helper method oder ähnlichem ersetzt werden.
Zum Beispiel
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
kann mit diesem Helfer Aufruf
@DateFormatter(Model.AuditDate)
aktualisiert verwendet wird, fand ich heraus, dass es alternativer Weg, um die gleiche Sache zu tun, wenn DateTime.ToString(String, IFormatProvider) Methode verwendet wird. Wenn diese Methode verwendet wird, muss die Thread
CurrentCulture
Eigenschaft nicht verwendet werden. Die wird als zweites Argument ->IFormatProvider zu DateTime.ToString(String, IFormatProvider)
Methode übergeben.
Modified Hilfsmethode:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET Fiddle
wenn ich verwendet '@Model. AuditDate.Value.ToString ("d") ' ' Weitere Informationen: Vorlagen können nur mit verwendet werden Feldzugriff, Eigenschaftenzugriff, eindimensionaler Array-Index oder benutzerdefinierte Ausdrücke für einen einzelnen Parameter. –
@AbuHamzah - klingt, als ob Sie immer noch versuchen, dies in den Helfer 'Html.DisplayFor' zu bringen. Tu das nicht. Sind Sie auch sicher, dass es den Fehler auf dieser Zeile und nicht eine andere Eigenschaft, die Sie versuchen, den 'DisplayFor' Helfer zu verwenden, auf? – Tommy
Wenn ich '@Model ...' habe, bekomme ich diesen Fehler: 'Model' Konflikte mit der Deklaration System.Web.Mvc.WebViewPage .Model ' –