ユーザーが詳細を入力できる MVC Web アプリケーション用のフォームを設計しました。詳細の 1 つは、DateTime Picker から選択できる Date です。
Date を含むすべての詳細を入力した後、フォームを送信しますが、次のページに移動する代わりに、同じフォームがリロードされ、日付フィールドに検証エラーが表示され、日付として 01/01/0001 00:00:00 が設定されます。
解決策は何ですか?
私はこのように日時変数を宣言しました -
[Required]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime ShipmentDate { get; set; }
これに何か欠けていますか?
技術的な詳細:
MVC アプリケーションをWindows Server 2012 にデプロイしました。データベースは SQL Server 2012 で、Web サーバーは IIS 8 です。
開発バージョンから実行すると、正常に動作します。つまり、Visual Studio 2012-Db SQL Server 2012-IIS 7.5 から。しかし、上記の行は、私が使用したいライブ バージョンです。
混乱を助けてください。
考えられる解決策の 1 つは、コンテキスト外の DateTimePicker ファイルです。たとえば、2013 年 4 月 17 日などの日付を入力してアプリケーションをテストしたとき、うまくいきました。
datetimePicker に外部の .js ファイルを使用しました。このファイルの OS 要件は Windows 7 、Windows Vista でした。
アプリケーションを Windows Server 2012 にデプロイしました (サーバー上の datepickerFile も)。したがって、ファイルの JQuery ロジックが実装されていないため、フォームの textBox に設定した後でも日付が null のままになると思います。
最終的に、ポストバックを実行すると、null 値がモデルに返され、Model.IsValid の条件で null がチェックされますが、これは失敗し、ビューが再作成されます。Datetime のデフォルト値は 01/01/0001 00:00:00 であるため、この値は dateTime フィールドで初期化されます。
よろしく、
マンゲッシュ