MVCのDefaultModelBinder
は、POST対GETリクエストの値(たとえば、double
,DateTime
など)を解析するために、異なる文化を使用することが判明しました。 Hereです。モデルバインディングで使用されるすべてのValueProviderResultのカルチャを指定した値に設定する方法はありますか?
これは、IValueProvider.GetValue()
から返されたValueProviderResult
オブジェクトのCulture
プロパティによって制御されています。
私の質問はどのようにしてこの値が常にCultureInfo.InvariantCultureであることをグローバルに確認できますか。
私はカスタム値プロバイダを実装してこのようにすることができます。
私はカスタムモデルバインダーを実装して、このようにすることができます。
私はスレッドで文化を設定することができますが、残念ながらこれは私の場合はオプションではありません。
私が探しているのは、既定のモデルバインダーと既存のバリュープロバイダーでも、スレッドカルチャが設定されているかどうかにかかわらず、カルチャ不変の方法で解析できるように設定する方法です。
お返事ありがとうございます。私は、デフォルトのプロバイダーのどれがCurrentCultureを使用しているのかわからなかったと思います(したがって私は拡張が必要です)ので、より一般的なソリューションを探していました。 –
リストを追加しました。私は 'Session'と' TempData'を削除しました。これらはMVC Futuresの一部であり、デフォルトでは使用されていません - CookieとServerVariableでも同じです。それらのすべては 'InvariantCulture'を使用します。 – JimmiTh