MVC & Форматирование даты - PullRequest
       6

MVC & Форматирование даты

1 голос
/ 19 февраля 2009

Где в архитектуре на основе MVC должно жить форматирование даты (долгое / короткое / время / без времени / Великобритания / США)? Я хочу, чтобы можно было указывать long / short / time / no-time для каждого поля - т.е. DateOfBirth не заботится о времени, но CreationDate может.

При использовании ASP.NET MVC, кажется, нет простого способа сделать это в View, что заставляет меня задуматься, должно ли оно находиться в ViewModel как поле FormattedDate?

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 19 февраля 2009

Прежде всего, существует разница между (1: длинный / короткий), (2: время / без времени) и (3: Великобритания / США). 1. определенно является выбором для представления, 2. эффективно описывает типы данных («DateTime», «Date» (которого не существует, и вам необходимо создать)) и 3. является профилем пользователя, который снова принадлежит в представлении.

Пока у вас есть только два типа DateTime (который существует) и Date (который не существует). Это типы, которые вы можете ожидать от модели.

0 голосов
/ 23 марта 2011

Я использую Htmlhelpers в этих ситуациях. Это примитивный способ возврата сумм денег, отформатированных в Дании (думаю, где я живу). У меня есть похожие для возвращения даты и времени.

public static class FormatMoneyExtension {
    public static string FormatMoney(this HtmlHelper htmlHelper, decimal? amount) {
        if (null != amount) {
            return ((decimal)amount).ToString("N", System.Globalization.CultureInfo.CreateSpecificCulture("da-DK"));
        } else {
            return new decimal(0.0).ToString("N", System.Globalization.CultureInfo.CreateSpecificCulture("da-DK"));
        }
    }
}

Это делает взгляды намного более читабельными, например: <%:Html.FormatMoney(Model.amount)%>.

Аналогичным образом можно обернуть нативные элементы управления, такие как texbox и т. Д.

Удачи и счастливой работы

0 голосов
/ 19 февраля 2009

Я читаю это как две части:

  • Форматирование (длинное, короткое)
  • Тип данных (дата и время, просто дата, просто время)

Первая часть, в основном, представляет собой проблему, которая должна присутствовать в презентации. Скорее всего, я бы просто разработал некоторые методы расширения для DateTime / Date / Time, которые включают требуемый перевод, или, возможно, даже создадим версии презентаций типов.

Вторая часть касается моделей, так как дата рождения (обычно) не включает время, независимо от того, как вы ее представляете, и время начала повторяющейся лекции не должно иметь дату (поскольку она повторяется). , это было бы на самом деле имеет начало / конец). К сожалению, .net не включает (насколько я могу вспомнить) отдельные объекты для даты и времени, поэтому я обычно делаю свои собственные.

...