Dopo un po 'di ricerca, ho finito per impostare Thread
il valore CurrentCulture di avere CultureInfo ("en-US") nel metodo di azione del controller:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Ecco alcune altre opzioni se vuoi avere questa impostazione in ogni vista.
Informazioni sul CurrentCulture
valore della proprietà:
L' oggetto CultureInfo restituito da questa proprietà, insieme agli oggetti associati, determinano il formato predefinito per date, ore, numeri, valori di valuta, ordinamento del testo, convenzioni di maiuscole e minuscole e confronti di stringhe.
Fonte: MSDN CurrentCulture
Nota: l' CurrentCulture
impostazione della proprietà precedente è probabilmente facoltativa se il controller è già in esecuzione con CultureInfo("en-US")
o è simile al formato della data"MM/dd/yyyy"
.
Dopo aver impostato la CurrentCulture
proprietà, aggiungi il blocco di codice per convertire la data in "M/d/yyyy"
formato nella vista:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Sopra la @shortDateLocalFormat
variabile è formattata con ToString("M/d/yyyy")
opere. Se ToString("MM/dd/yyyy")
viene utilizzato, come ho fatto prima, si finisce per avere zero problemi . Anche come consigliato da Tommy ToString("d")
funziona pure. In realtà "d"
sta per "modello di data breve" e può essere utilizzato anche con diversi formati di lingua / cultura.
Immagino che il blocco di codice dall'alto possa anche essere sostituito con un metodo di supporto interessante o simile.
Per esempio
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
può essere utilizzato con questa chiamata di supporto
@DateFormatter(Model.AuditDate)
Aggiornamento , ho scoperto che esiste un modo alternativo per fare la stessa cosa quando viene utilizzato il metodo DateTime.ToString (String, IFormatProvider) . Quando viene utilizzato questo metodo, non è necessario utilizzare Thread
la CurrentCulture
proprietà di. Il CultureInfo("en-US")
viene passato come secondo argomento -> IFormatProvider al DateTime.ToString(String, IFormatProvider)
metodo.
Metodo di supporto modificato:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET Fiddle
No overload for method 'ToString' takes 1 arguments