これはちょっと奇妙です...
私のフォームには 2 つのボタンがあります (どちらも<input type="button" />
)。ボタン 1 (B1) にはonclick="update()"
、Data パラメーターが入力された Ajax を呼び出す場所があります。2 番目のボタン (B2) は、昔ながらの送信を使用します。ちなみに、どちらのボタンも同じコントローラー/アクションを呼び出します。フィールドから日付を送り返すためのボタンがあり@Html.EditorFor(x => x.StartDate)
ます(つまり、jquery datepickerです)。
たとえば、StartDate = "30/09/2012" (dd/mm/yy) とします。
B1 をクリックすると、Ajax が呼び出され、すべてのデータが data パラメーターを介して正しく渡されます。このパラメーターは、$("#form").serializeArray() からの json です。この呼び出しはバインダーをスキップし、指定されたコントローラー/アクションを直接呼び出します。私の StartDate プロパティには正しい日付が付いています。
しかし、B2 をクリックすると、既定の動作でクエリ文字列が作成され、アプリケーションがクラッシュします。何が起こっているのかをインターセプトして検査するためにカスタムの日付バインダーを作成しましたが、日付文字列が「2012 年 9 月 30 日」であり、dd/mm を使用するカルチャ (pt-BR) に変換しようとしていることに気付きました。
もう少し先に進むと、奇妙なクエリ文字列を作成していたため、送信イベントに問題があることがわかりました。
//../Action?StartDate=09%2F30%2F2011%2000%3A00%3A00
もう 1 つ: Datepicker、webconfig、およびクライアント ブラウザーはすべて同じカルチャに構成されています。
さて、これをどのように進めればよいでしょうか?送信されたすべての日付が mm/dd/yy としてバインダーに到着し、カスタムの日付バインダーがこれを管理するように強制することを一般化できますか?
ありがとう!