2009-06-11 1 views
2

私はInvariantCulture(16.4)に小数点のformvalueを掲示しました。ドイツのシステムでModelに到達しなかったことに驚いていました。パラメータをモデルにマッピングするときに使用する言語はどれですか?

ドイツ語の形式(16,4)を使用する必要がありました。パラメータの解析に使用する言語を設定する方法はありますか?

EDIT: ソースコードにデバッグした後はValueProviderDictionary

PopulateDictionary言語特定の部分を発見しました。そこにドキュメントが読み:

  1. リクエストフォーム送信(文化を意識する必要があります)RouteDataから
  2. 値(URL型付けインまたはルートのデフォルト値からからかもしれない)
  3. URIクエリ文字列

1.takes CurrentCulture 2./3。 take InvariantCulture

これは私のためには機能しません:私が値を掲示したりクエリーストリングに入れると、Cultureの使用に関して異なる行動は期待できません。 ユーザーが解析可能な値を手作業で入力する必要があるかもしれませんが、Listboxの値を入力すると不思議です。理想的な解決策は、両方のバージョンを切り替えることができれば私のことです。

とにかく、私は今、PopulateDictionaryが呼び出される前にCultureInfo.CurrentCultureを設定する方法を見つける必要がありました。それで私はそれをしました:

 void Application_BeginRequest(object sender, EventArgs e) 
    { 
     Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; 

    } 

答えて

0

これで問題は解決しました。 注意:ユーザーがローカル形式で値を入力すると、解析されません。 これは私のアプリケーションではほとんど起こりません。うまくいけば、私が使用するUIコンポーネントは、値の表示と投稿のための異なる文化を可能にするでしょう。

void Application_BeginRequest(object sender, EventArgs e) 
    { 
     Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; 

    } 
3

デフォルトの解析では、CurrentCultureが使用されます。しかし、すべての解析メソッドは、IFormatProvider(CultureInfoか、解析しているものに応じて、NumberFormatInfoまたはDateTimeFormatInfo)を使用します。このシナリオでは、InvariantCultureを使用する必要があります(ユーザーに表示されないバックエンドのものは、InvariantCultureを使用する必要があります)。

関連する問題