13

私はブラウザとして Google Chrome V28 を使用しています - モデルの DataAnnotations に問題があり、ビューで datatime タイプをレンダリングするときに Chrome が独自の組み込みカレンダーを使用する必要があります。

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

public class ObScore
{
    public int ObScoreId { get; set; }

    ...
    ...
    [DisplayFormat(DataFormatString = "{0:dd MMMM yyyy}", ApplyFormatInEditMode = true)]
    [Display(Name = "Date")]
    [DataType(DataType.Date)]
    public DateTime Date { get; set; }
    ...
    ...
}

モデルには間違いなくデータがあります。 モデル画像

...しかし、編集モードで表示すると、Chrome には次のように表示されます。 クローム ビュー

これはChromeの既知のバグですか?また、フォームに日付を強制するためにコードでできることはありますか?

ありがとう、マーク

4

5 に答える 5

18

6か月前の質問を復活させて申し訳ありませんが、私は同じ問題を抱えていて、OPが探していたものとまったく同じだと思う答えを持っています.

mikhairu からの回答は機能しますが、タイプをテキストに変更する必要があります。OP によるスクリーンショットは、入力が type=date である必要がある Chrome の組み込みの日付ピッカー UI を示しています。Chrome では、入力 type=date の値を YYYY-MM-DD の形式にする必要があります。これは、おそらくカルチャ固有のあいまいさを回避するためです。

したがって、モデルで、このデータ注釈を日付プロパティに追加します。

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
于 2014-01-22T16:02:08.967 に答える
7

デフォルトのクロム日付ピッカーを使用して日付を表示するには、モデルに 2 つの属性が必要です。

  • [DataType(DataType.Date)]になります<input type="date" />この回答を参照してください。
  • [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]. この形式yyyy-MM-ddは、chrome 日付ピッカーに必要です。この回答を参照してください。

例えば:

モデル

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

レーザービュー

<div class="form-group">
    @Html.LabelFor(model => model.Date, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">

        @* Control with date picker *@
        @Html.EditorFor(model => model.Date, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Date, "", new { @class = "text-danger" })
    </div>
</div>
于 2017-07-19T14:31:32.767 に答える