奇妙な問題があります。日付の検証が Chrome で機能しません。この回答を試しましたが、うまくいきませんでした。
私は自分のモデルにこれを持っています:
[Display(Name = "Date")]
[DataType(DataType.Date)]
public DateTime Date { get; set; }
私の見解:
<div class="editor-field">
@Html.TextBoxFor(model => model.Item.Date, new { @class = "picker" })
@Html.ValidationMessageFor(model => model.Item.Date)
</div>
$(document).ready(function () {
$('.picker').datepicker({
dateFormat: 'dd.mm.yy',
changeMonth: true,
changeYear: true,
selectOtherMonths: true
});
});
Opera と Firefox ではすべて機能しますが、Chrome はこのタイプの日付を好みません。次のエラーが常に発生しますThe field 'Date' must be a date
。
何か案は?
アップデート
コードが部分ビュー内にある場合に問題があるようです。そのコードをメイン ページにコピーすると、検証が正常に機能します。
次のように、メイン ビュー内に部分ビューを挿入しています。
@Html.Partial("_CreateOrEdit", Model)
上記のコードは部分ビュー内にあります。
@model Pro.Web.Models.Model
<div class="editor-field">
@Html.TextBoxFor(model => model.Item.Date, new { @class = "picker" })
@Html.ValidationMessageFor(model => model.Item.Date)
$(document).ready(function () {
$('.picker').datepicker({
dateFormat: 'dd.mm.yy',
changeMonth: true,
changeYear: true,
selectOtherMonths: true
});
</script>
});
更新2
結局うまくいきません。うまくいくこともあれば、うまくいかないこともあります。日付を数回クリックすると、検証がパスすることがあります。同じ日付に対して、正しい検証と間違った検証が存在する可能性があります。
これは、日付フィールドの出力 html です。
<div class="editor-field">
<input class="picker" data-val="true" data-val-date="The field Date must be a date." data-val-required="The Date field is required." id="date" name="Item.Date" type="text" value="1.1.0001. 0:00:00" />
<span class="field-validation-valid" data-valmsg-for="Item.Date" data-valmsg-replace="true"></span>
</div>