2

ユーザーが詳細を入力できる 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 フィールドで初期化されます。

よろしく、

マンゲッシュ

4

1 に答える 1

2

これは、カルチャ情報が正しくない場合に発生します。web.conf を構成する必要があります。

<system.web>    
    <globalization culture="en-US" />
</system.web>  

これは、あなたの国に依存するさまざまな文化情報のリストです。

これは IIS 8.0 以降の問題です。

于 2018-04-18T14:03:48.767 に答える