Après quelques fouilles et j'ai fini par définir Threadla valeur CurrentCulture pour avoir CultureInfo ("en-US") dans la méthode d'action du contrôleur:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Voici quelques autres options si vous souhaitez avoir ce paramètre sur chaque vue.
À propos de la CurrentCulturevaleur de la propriété:
L' objet CultureInfo renvoyé par cette propriété, ainsi que ses objets associés, déterminent le format par défaut des dates, heures, nombres, valeurs monétaires, l'ordre de tri du texte, les conventions de casse et les comparaisons de chaînes.
Source: MSDN CurrentCulture
Remarque: Le CurrentCultureparamètre de propriété précédent est probablement facultatif si le contrôleur est déjà en cours d'exécution avec CultureInfo("en-US")ou similaire où le format de date est "MM/dd/yyyy".
Après avoir défini la CurrentCulturepropriété, ajoutez un bloc de code pour convertir la date au "M/d/yyyy"format dans la vue:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Au-dessus, la @shortDateLocalFormatvariable est formatée avec des ToString("M/d/yyyy")œuvres. Si ToString("MM/dd/yyyy")est utilisé, comme je l'ai fait d'abord, vous finissez par avoir un problème majeur . Comme recommandé par Tommy ToString("d") fonctionne également. En fait, cela "d"signifie «modèle de date courte» et peut également être utilisé avec différents formats de culture / langue.
Je suppose que le bloc de code ci-dessus peut également être remplacé par une méthode d'assistance cool ou similaire.
Par exemple
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
peut être utilisé avec cet appel d'assistance
@DateFormatter(Model.AuditDate)
Mise à jour , j'ai découvert qu'il existe un autre moyen de faire la même chose lorsque la méthode DateTime.ToString (String, IFormatProvider) est utilisée. Lorsque cette méthode est utilisée, il n'est pas nécessaire d'utiliser Threadla CurrentCulturepropriété de. Le CultureInfo("en-US")est passé comme deuxième argument -> IFormatProvider à la DateTime.ToString(String, IFormatProvider)méthode.
Méthode d'assistance modifiée:
@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