ASP.Net MVC 3 アプリケーション内の CRUD テーブルに jQuery jTable プラグインを使用しています。私の開発マシンでコードを実行すると問題なく動作します。ただし、コードを本番サーバーに移動すると、コントローラーでトリガーされている「フォームが無効です!...」というエラーが発生し続けるため、jTable に新しいイベント/行を追加できませんif(!ModelState.IsValid)
。
次に、ModelState からエラーを取得しModelState.Values.SelectMany(v => v.Errors)
て JSON 応答に入れました。これが、ModelState が無効な理由です。"ErrorMessage=The value '15/08/2013 11:00:00' is not valid for Timestamp."
私の質問は、なぜその日付文字列が私の開発サーバーでは問題ないのに、本番環境では無効なのですか?
また、無効なモデルはEF Database Firstで作成したものなので、DataAnnotationsは自分で設定していません。デフォルトの modelbinder が実稼働システムで正しく動作しないようです。
MM/DD/YY の代わりに DD/MM/YY を使用していることが原因でしょうか? カナダ流だな..
編集:あはは!カルチャ固有の形式が原因でした。最初に、運用環境のカルチャ設定を米国からカナダに切り替えて修正しようとしましたが、それでも修正されませんでした。それで、私が次にしたことは、私Web.config
のsystem.web
部分に一列に追加され、<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-CA" uiCulture="en-CA"/>
今ではスムーズに機能しています. これが誰かに役立つことを願っています!