0

我的 Web 应用程序支持多种日期时间格式,即yyyy-MM-ddyyyy.MM.dd和. 前两个完美地工作,但是,当我使用其他两种格式时,斜线在初始打印中被替换为破折号,这使得它们无法通过验证。但是,如果我选择一个日期,它会以正确的(选择的)格式出现。dd/MM/yyyyMM/dd/yyyy

我正在使用文化 sv-SE。

4

2 回答 2

4

怀疑(没有 Kendo UI 的经验,但有其他日期/时间 API 的经验)“/”被视为“特定于文化的日期分隔符”。如果您想要“完全是正斜杠,无论文化如何”,您可能需要转义它。

转义的执行方式取决于库,但通常您只使用引号,例如

dd'/'MM'/'yyyy
MM'/'dd'/'yyyy
于 2013-03-25T13:00:21.483 回答
0

正如Jon在他的回答中指出的那样,这是关于/成为 .NET自定义日期格式中的特殊字符。

使用 Kendo 时,这会让人感到困惑,因为它不用/特殊字符

使用单独的格式字符串客户端和服务器端应该是答案,但不幸的是,在MVC 的 Telerik UI(在客户端使用 Kendo)中,客户端和服务器端都使用单个格式字符串以及用于 Kendo 的 MVC 助手。

例如,在日期格式为“dd-MM-yyyy”(在 Windows 区域设置中设置)和视图模型的服务器上:

    [Display(Name="Date")]
    [UIHint("Date")]
    [DisplayFormat(DataFormatString = Constants.DateFormat, ApplyFormatInEditMode = true)]
    public DateTime Date { get; set; }

Constants.DateFormat是“dd/MM/yyyy”)然后有一个编辑器模板(“Date.cshtml”):

@(Html.Kendo().DatePickerFor(m => m)

导致初始日期显示“29-05-2015”和 JavaScript 错误,因为它无法解析。

作为一种解决方法

@(Html.Kendo().DatePickerFor(m => m)
              .ParseFormats(new[] { "dd-MM-yyyy", Constants.DateFormat}))

生成的 HTML 中的格式是错误的,但 JavaScript 至少能够理解它。(这当然应该DateTimeFormatInfo.DateSeparator用来动态构建替代格式。)

于 2015-05-29T13:58:56.967 回答