26

奇妙な問題があります。日付の検証が 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>
4

6 に答える 6

19

まったく同じ状況 (部分図)

検証属性を削除して解決し、サーバー側で検証を実行しました。

$('#date').removeAttr("data-val-date");
于 2013-12-12T16:06:48.153 に答える
11

私の意見では、問題は、MVC が日付 HTML5 入力用に生成されていること[type=date]です。これにより、クロムの有効な日付形式がシステムの日付形式と同じになります。

おそらく、次の属性を使用して、MVC の日付形式を JqueryUI と共通に設定できます。

[DataType(DataType.Date), DisplayFormat( DataFormatString="{0:dd.MM.yy}", ApplyFormatInEditMode=true )]

2 番目のアイデアは、次の記事のコードを使用することです: Creation a Native HTML 5 Datepicker with a Fallback to jQuery UI

もう一つ。HTML入力の日付に関する良いトピックがあります:入力タイプを変更する方法はありますか?「日付」形式はありますか?

于 2013-04-29T18:53:41.357 に答える
1

仕様では有効な値がRFC3339<input type="date" />として定義されているため、 (HTML5)に問題があるようです。

そこで、ビューを次のように変更しました。

<script>
    $(function () {
         $("#validfrom").datepicker({
             altField: "#ValidFrom",
             altFormat: "yy-mm-dd"
         });
    });
</script>

<div class="editor-label">
    @Html.LabelFor(model => model.ValidFrom)
</div>
<div class="editor-field">
    <input id="validfrom" type="text" name="validfrom" />
    @Html.HiddenFor(model => model.ValidFrom)
    @Html.ValidationMessageFor(model => model.ValidFrom)
</div>

それが役に立てば幸い。

于 2013-07-15T14:11:48.593 に答える
0

同じエラーが発生しました。型としてdatetimeを適用することで解決しましたが、

 @Html.EditorFor(model => model.LineResetAllowStartDate, new { htmlAttributes = new { @class = "form-control" ,  @type = "datetime" } })

同様に、時間を時間だけに使用する

 @Html.EditorFor(model => model.LineResetAllowStartDate, new { htmlAttributes = new { @class = "form-control" ,  @type = "time" } })
于 2016-11-20T07:49:43.257 に答える