Після деякого копання , і я закінчив настройки Thread
«s CurrentCulture значення мають CultureInfo (" EN-US ") в методі дії контролера:
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US")
Ось кілька інших варіантів якщо ви хочете, щоб цей параметр був у кожному поданні.
Про CurrentCulture
вартість майна:
Об’єкт CultureInfo, який повертається цією властивістю, разом із пов’язаними об’єктами визначає формат за замовчуванням для дат, часу, чисел, значень валют, порядок сортування тексту, умовні позначення та порівняння рядків.
Джерело: MSDN CurrentCulture
Примітка: Попереднє CurrentCulture
налаштування властивостей є, можливо, необов’язковим, якщо контролер вже працює з CultureInfo("en-US")
або подібним, де є формат дати"MM/dd/yyyy"
.
Після встановлення CurrentCulture
властивості додайте блок коду для перетворення дати у "M/d/yyyy"
формат у поданні:
@{
var shortDateLocalFormat = "";
if (Model.AuditDate.HasValue) {
shortDateLocalFormat = ((DateTime)Model.AuditDate).ToString("M/d/yyyy");
}
}
@shortDateLocalFormat
Над @shortDateLocalFormat
змінною відформатовано ToString("M/d/yyyy")
твори. Якщо ToString("MM/dd/yyyy")
використовується, як це робив я спочатку, тоді у вас вийде нульова проблема . Також як і рекомендації Томмі ToString("d")
. Насправді "d"
розшифровується як “шаблон короткої дати” і може використовуватися з різними форматами культури / мови.
Я припускаю, що блок коду зверху також може бути замінений якимсь крутим допоміжним методом або подібним.
Наприклад
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("M/d/yyyy");
}
@shortDateLocalFormat
}
можна використовувати з цим допоміжним викликом
@DateFormatter(Model.AuditDate)
Оновлення , я виявив, що існує альтернативний спосіб зробити те саме, коли використовується метод DateTime.ToString (String, IFormatProvider) . Коли використовується цей метод, тоді немає необхідності використовувати властивість Thread
' CurrentCulture
. CultureInfo("en-US")
Передається в якості другого аргументу -> IFormatProvider до DateTime.ToString(String, IFormatProvider)
методу.
Модифікований допоміжний метод:
@helper DateFormatter(object date)
{
var shortDateLocalFormat = "";
if (date != null) {
shortDateLocalFormat = ((DateTime)date).ToString("d", new System.Globalization.CultureInfo("en-US"));
}
@shortDateLocalFormat
}
.NET Скрипка
No overload for method 'ToString' takes 1 arguments