1

在基于 MVC 的架构中,日期格式(长/短/时间/无时间/英国/美国)应该存在于何处?我希望能够在每个字段的基础上指定长/短/时间/无时间 - 即 DateOfBirth 不关心时间,但 CreationDate 可能。

使用 ASP.NET MVC,在 View 中似乎没有一种简单的方法可以做到这一点,这让我想知道它是否应该作为 FormattedDate 字段位于 ViewModel 中?

有什么建议么?

4

3 回答 3

2

首先,(1:长/短)、(2:时间/无时间)和(3:英国/美国)之间存在差异。1. 绝对是一个视图选择,2. 有效地描述数据类型(“DateTime”,“Date”(不存在,您需要创建))和 3. 是用户配置文件,这又是属于视图。

到目前为止,您只有两种类型 DateTime(存在)和 Date(不存在)。这些是您可以期望模型公开的类型。

于 2009-02-19T10:43:32.730 回答
0

我把它读成两部分:

  • 格式化(长,短)
  • 数据类型(日期和时间,只是日期,只是时间)

第一部分主要是视图关注点,应该包含在演示文稿中。我很可能只是为 DateTime/Date/Time 制作一些扩展方法,其中包括所需的翻译,甚至可能创建类型的演示版本。

第二部分是模型问题,因为出生日期(通常)不包括时间,无论您以何种方式呈现它,并且重复讲座的开始时间不应该有日期(因为它是重复的,它会实际上有一个开始/结束)。可悲的是,.net 不包括(据我所知)日期和时间的单独对象,所以我通常自己滚动。

于 2009-02-19T20:48:09.797 回答
0

我在这些情况下使用 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 等。

祝你好运,工作愉快

于 2011-03-23T08:34:38.793 回答