2009-02-19 206 views
1

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

使用ASP.NET MVC,在View中看起来并不是一种简单的方法,这让我想知道它是否应该作为FormattedDate字段放在ViewModel中?

有什么建议吗?

+0

你希望有什么地方的元数据描述每个字段的格式要求,从现场可以使用的各种意见分开吗? – AnthonyWJones 2009-02-19 10:44:05

回答

2

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

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

0

我读这两个部分:

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

第一部分是一个主要是关注问题,并且应该生活在演示文稿中。我很可能只是为DateTime/Date/Time制作一些扩展方法,其中包括所需的翻译,或者甚至可以创建类型的演示版本。

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

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等。

好运和快乐的工作