0

私のWebアプリケーションは、複数の日時形式、つまり、、、をサポートしyyyy-MM-ddyyyy.MM.dddd/MM/yyyyますMM/dd/yyyy。最初の2つの形式は完全に機能しますが、他の2つの形式を使用すると、最初の印刷でスラッシュがダッシュに置き換えられ、検証に失敗します。ただし、日付を選択すると、正しい(選択された)形式で出力されます。

私はculturesv-SEを使用しています。

4

2 に答える 2

4

( Kendo UIの経験はないが、他の日付/時刻APIの経験がある)「/」は「カルチャ固有の日付区切り文字」として扱われているのではないかと思います。「文化に関係なく、正確にスラッシュ」が必要な場合は、それを回避する必要があります。

エスケープがどのように実行されるかはライブラリによって異なりますが、多くの場合、引用符を使用するだけです。

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

Jonが彼の回答で述べているように、これは.NET/カスタム日付形式の特殊文字であることについてです。

/剣道で作業する場合、特殊文字として使用されないため、これは混乱を招きます。

クライアント側とサーバー側で別々のフォーマット文字列を使用することが答えになるはずですが、残念ながら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 に答える