13

日時フィールドのクライアント側の検証に問題がある状況があります。送信しようとすると、日付が無効であると表示され続けます (2013 年 7 月 27 日)。しかし、日付を米国形式にすると機能します (2013 年 7 月 27 日)。

私のビューモデルは次のとおりです。

[DataType(DataType.Date), DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? AuditDate { get; set; }

索引.html

 @Html.TextBoxFor(m => m.AuditDate)

web.config を更新しました

<globalization culture="en-AU" uiCulture="en-AU" />

私は何を逃したのですか?

ありがとう

4

4 に答える 4

27

他の誰かが私のためにこれをソートしました。それはすべて、クライアント側の Jquery 検証に関係していました。もう一度 asymptoticFault に感謝します..あなたはロックします.. MVC 4 日付文化の問題?

これが私が使用したそのリンクからの情報です...

問題は、日付を解析するときにカルチャを考慮しない jQuery 検証です。クライアント側の検証をオフにすると、カルチャを認識しているサーバーで日付が適切に解析されます。

修正は、日付の jQuery 検証をオーバーライドし、追加の jQuery グローバリゼーション プラグインを含めることです。globalize プラグインはこちらで見つけることができます。Nuget Package Manager を使用してプラグインを簡単にダウンロードすることもできます。パッケージ マネージャーを開いて、左側の [オンライン] タブを選択し、検索に「globalize」と入力したところ、最初の結果でした。インストールしたら、次の 2 つのファイルを含めました。

globalize.js 
globalize.culture.en-AU.js

スクリプト タグを使用してそれらを直接含めるか、他の jQuery 検証ファイルと一緒にバンドルに配置することができます。

それらを取得したら、次のスクリプトを追加して、日付の jQuery 検証をオーバーライドする必要があります。

<script type="text/javascript">
    $(function () {
        $.validator.methods.date = function (value, element) {
            Globalize.culture("en-AU");
            // you can alternatively pass the culture to parseDate instead of
            // setting the culture above, like so:
            // parseDate(value, null, "en-AU")
            return this.optional(element) || Globalize.parseDate(value) !== null;
        }
    });
</script>
于 2013-09-02T02:46:23.120 に答える
4

日付に jQuery 検証を使用すると、Chrome を使用した日付に対してはうまく機能しないことがわかります。これは、US 以外のロケールを使用している場合に発生します。

このソリューションは、Fixing jQuery non-US Date Validation for Chromeで提示されています

于 2013-09-01T04:45:10.213 に答える
-2

これで試して、

意見

<div>
                @Html.LabelFor(m => m.DOB)
                @Html.TextBoxFor(m => m.DOB, new { @Formate = "dd/MM/yyyy" })
                @Html.ValidationMessageFor(m => m.DOB)

            </div>

モデル

[DisplayName("Date Of Birth")][DataType(DataType.Date)]
public DateTime DOB { get; set; }
于 2013-08-31T11:00:55.837 に答える