MVC&日期格式

时间:2009-02-19 10:03:45

标签: asp.net-mvc date-formatting

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

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

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我将其视为两部分:

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

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

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

答案 2 :(得分: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等。

祝你好运,工作愉快