異なる言語のウェブサイトを作成したい。これはModelBinderを使用する前に文化を変更する
public class DecimalModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
string key = bindingContext.ModelName;
var v = ((string[])bindingContext.ValueProvider.GetValue(key).RawValue)[0];
float outPut;
if (float.TryParse(v, NumberStyles.Number, System.Globalization.CultureInfo.CurrentCulture, out outPut))
return outPut;
return base.BindModel(controllerContext, bindingContext);
}
}
私は英語とドイツ語の数値形式で作業するために、カスタムModelBinderを作成する必要がありました(
123,456,789.1
対
123.456.789,1
):私はすでに私が
ActionFilterを作成することができることを読んで、私はリッテ問題を抱えていますModelBinderは、現在のカルチャを使用して、使用されるフォーマットを決定します。 しかし、残念ながら、ModelFinderは、ActionFilterがカルチャを変更する前に使用されます。
の前に文化を変更するにはModelBinderがアクティブになりますか?
を設定することができ、モデルをバインドする前に実行されます、あなたに多くのことを感謝!しかし、私は1つの質問を持っています:あなたは知っています、なぜコードは要求ごとに5回実行されますか? – Christopher
私はその動作を取得していません。 ((System.Web.HttpApplication)(送信者))にRequest.RawUrlに時計を追加して、リクエストが同じかどうか確認できますか? – barry
@Christopherコードはリクエストごとに1回(したがってBeginRequestという名前で)実行されるため、ページのリクエストが1回、スタイルシート、画像、またはJavaScriptファイルのリクエストが4回あります。 Request.Urlをチェックしてください。 –