0

最近 POST から GET に変更した ASP.NET MVC サイトにフォームがあります。ただし、これを行ったときに、関連するアクションの DateTime パラメーターが、POST の en-GB ではなく、GET の en-US という別のカルチャを効果的に使用していることに気付きました。つまり、基本的に日と月が入れ替わっています。

次の記事で、これが行われる理由を説明しましたが、送信前に POST に戻したり、JS を使用してフォームを変更したりせずに、それを克服する方法を見つける必要がありました。

http://xhalent.wordpress.com/2011/05/14/localization-of-dates-in-asp-net-mvc/ http://weblogs.asp.net/melvynharbour/archive/2008/11/21/ mvc-modelbinder-and-localization.aspx

理論を試すためだけに、DateTime のカスタム バインダーを作成しましたが、そうすることで問題が解決したようです。なぜこれが機能するのか誰でも説明できますか?

カスタム バインダーは、基本的に global.ascx.cs の次の行でした。

ModelBinders.Binders.Add(typeof(DateTime), new DateTimeModelBinder());

そしてこれは DateTimeModelBinder クラス用です

public class DateTimeModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        return bindingContext.Model;
    }
}
4

1 に答える 1

0

これを行う唯一の方法はJSのようです。上記の答えだと思ったのは、モデルのコンストラクターによって設定された値を返すことだけでした。

于 2012-02-10T16:09:23.590 に答える