2009-07-14 7 views
4

私はかなり標準の.NET MVCコントローラのメソッドを持っている:.NET MVCのDateTimeモデルバインダーのデフォルト入力形式を変更するにはどうすればよいですか?

お客様のようなものである
public ActionResult Add(Customer cust) { 
    //do something... 
    return View(); 
} 

public class Customer { 
    public DateTime DateOfBirth { get; set; } 
    //more stuff... 
} 

そして含むページ:

<div><%= Html.TextBox("DateOfBirth") %></div> 

問題は私のサイトですcust.DateOfBirthは、米国の書式MM/dd/yyyyで解析されるように、米国のサーバー上にあります。しかし、私はユーザーが英国のフォーマットdd/MM/yyyyで生年月日を入力するようにします。

DateTime ModelBinderのデフォルトの入力形式を変更することはできますか、独自のカスタムModelBinderを作成する必要はありますか?

答えて

4

web.configファイルまたはページレベルでカルチャを変更できます。ただし、文化の他の側面ではなく日付形式のみを変更する場合は、現在のカルチャのDateTimeFormatをglobal.asaxのコードまたは共通のベースコントローラーで変更し、 "en"のDateTimeFormatに設定する必要があります-GB "と表示されます。

Reference

、 のためのすべてのページをUIの文化と文化を設定するWeb.configファイルにグローバル化セクション を追加し、に示すように uicultureと文化の属性、 を設定するには次の例:

<globalization uiCulture="en" culture="en-GB" />

個々のUI培養および培養を設定しますページ、文化 を設定して、次の 例に示すようにUICultureは、@ページの ディレクティブ属性:

<%@ Page UICulture="en" Culture="en-GB" %>

ASP.NETは、その第一言語にUIの文化と 文化を設定しているために現在のブラウザで が指定されています。 の設定では、UICultureとCultureを autoに設定します。または、 の値をauto:culture_info_nameに設定することもできます。 culture_info_nameはカルチャ名です。 カルチャ名の一覧については、 CultureInfoを参照してください。この設定を@ Pageディレクティブまたは Web.configファイルのいずれかで にすることができます。

オルタナティブ:

CultureInfo.CurrentUICulture.DateTimeFormat 
    = CultureInfo.CurrentCulture.DateTimeFormat 
    = new CultureInfo("en-GB", false).DateTimeFormat; 
+0

ありがとうございます。@Pageディレクティブを使用できませんでした。私はマスターページを使用してビューに配置しました。何か案は? web.configのタグはうまくいきましたが、私はこれを行ってきましたが、将来はページ単位で作業したいと考えています。 –

2

あなたは別のショートカットパターンの意味を変更することができます。あなたの場合は、短い日付パターンまたは "d"になります。あなたがen-US文化を気に入っていて短時間の日時パターンを変更する必要がある場合は、Global.asaxに追加できます。

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    CultureInfo ci = new CultureInfo("en-US"); 
    ci.DateTimeFormat.SetAllDateTimePatterns(
     new string[] { "dd/MM/yyyy" }, 
     'd' 
    ); 
    System.Threading.Thread.CurrentThread.CurrentCulture = ci; 
    System.Threading.Thread.CurrentThread.CurrentUICulture = ci; 
} 

最初の配列はサポートされている日付の時刻形式で、2番目の文字は置き換えたいパターンです。

関連する問題