4

エンティティを保存するときにビューモデルプロパティで月と日が交換されるクライアント実稼働サーバーで問題が発生しています。たとえばApril 9th 2012 (04/09/2012)、日付ピッカー内で選択した場合、日付はとして保存されSeptember 4th 2012 (09/04/2012)ます。

同じコントローラーアクションがローカル開発/テストサーバーで正しく機能していて、次に何を見るべきかわからないのですか?

ビューモデルのプロパティ

[DisplayName("Date")]
[Required]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yy}")]
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }

関連するビュー内のヘルパー

@Html.EditorFor(model => model.StartDate)

jquery ui datepicker

$('#StartDate').datepicker({ dateFormat: 'mm/dd/yy' });

コントローラの簡略版

public ActionResult Create(BulletinBoardViewModel bulletin)
{
    var model = AutoMapper.Mapper.Map<BulletinBoardViewModel, BulletinBoard>(bulletin);
    _repository.Save(model);

    return RedirectToAction("Index");
}

関連する投稿のヘッダー

StartDate:04/09/2012

Cache-Control:private, s-maxage=0
Content-Length:131
Content-Type:text/html; charset=utf-8
Date:Tue, 10 Apr 2012 02:43:16 GMT
Location:/BulletinBoard
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-AspNetMvc-Version:3.0
X-Powered-By:ASP.NET
4

1 に答える 1

2

クライアントのサーバーが米国ではなく英国英語に設定されているようです。これはCultureInfoの一般的な問題です。いずれにせよ、オブジェクトが永続化されている場合でも、日付の値は正しいはずです。UIカルチャが選択されているため、表示が異なるだけです。

これが単なる明らかな問題ではなく、実際の問題である特定のコードを特定できますか?

また、実際には9月4日として保存されていません。あなたはそれをそのように読んでいるだけです。たとえば、12月31日を選んでみてください。エンティティが保存されると、2012年12月31日が表示される可能性があります。サーバーは、日付をdd / MM/yyyy形式で表示しているだけです。

于 2012-04-10T03:49:51.597 に答える