【发布时间】:2014-01-30 13:30:10
【问题描述】:
在我的应用程序中,MVC 文化设置为“en-US”,UICulture 设置为“nl-NL”。
我有一个视图,它呈现一个包含 Datetime 对象的模型。
如果我这样渲染:
Html.EditorFor(x => x.ForFilter.FromDate)
它将以 en-US 文化格式显示。所以为了以荷兰语格式显示日期,我必须这样做:
var shortDatePattern = System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern;
@Html.TextBoxFor(x => x.ForFilter.FromDate, new {Value = Model.ForFilter.FromDate.ToString(shortDatePattern) })
我知道存在可用于DateTime 字段的DisplayFormat 属性,但这不是解决方案,因为UICulture 是在运行时确定的。
那么,有没有更优雅的解决方案告诉EditorFor 和TextboxFor 方法使用UICulture 而不是Culture?
【问题讨论】:
-
微软似乎忘记了 MVC 中存在非美国格式的日期
-
是的,我还有另一个例子。当通过 Session.CreateSQLQuery() 然后 List() 方法使用 nhibernate 执行手写 sql 查询时,您只会得到一个原始对象。然后,如果您尝试执行 Convert.ToDateTime(x[1]); 之类的操作其中 x 是来自原始对象的对象数组,如果从您使用的任何 SQL 服务器返回的日期格式与应用程序文化的预期格式不匹配,则会遇到麻烦。这是应用程序文化不能始终与 UICulture 相同的另一个原因。
标签: c# asp.net-mvc razor