3

文化固有のデータ注釈を取得しようとしています。

[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime Date{ get; set; }

これはうまくいくと思いました。したがって、米国では DD/MM/yyyy と表示され、ヨーロッパでは MM/DD/YYYY と表示されます。

これをテストするために、デフォルトの Chrome 言語を英語 (英国) に設定し、ブラウザーを再起動しました。

ただし、まだ米国の形式を取得しているため、DataFormatString が文化を尊重していないと思います。

これを修正するにはどうすればよいですか? 「yyyy」の代わりに「yy」だけにするために、年の一部を切り取ることもできますか?

4

2 に答える 2

2

現在のカルチャを実際に設定する必要があります。MVC フレームワークはそれを自動的に設定しません (ページの言語は、ブラウザーの設定だけでなく、URL などの要因に依存する場合があることに注意してください。

カルチャを設定するには、 と を使用Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICultureます。からブラウザー設定を取得できますHttpRequest.UserLanguages(この値は、HTTP 要求によって取得されるものであることに注意してください)。

編集

この回答によると、ASP.Netに HTTP 要求ヘッダーに基づいて言語を設定するように指示する方法があるようです ( web.configグローバリゼーション-> "culture" および "uiCulture" を "auto" に設定)。

于 2013-09-10T20:56:47.953 に答える