...
[NotMapped]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime GeburtsdatumChromeEdit
{
get { return this.Geburtsdatum; }
set { this.Geburtsdatum = value; }
}
...
これはdataannotiationを追加する必要があるDisplayFormat
Chromeが望む形式で値を元のプロパティにパイプします。
<div class="date4Normal">
@*Tut nicht in Chrome, da dieser dann einen Input vom Type "Date" verwendet und dieser verlangt dann ein Normdatum yyyy-mm-dd*@
@Html.EditorFor(model => model.Geburtsdatum)
@Html.ValidationMessageFor(m => m.Geburtsdatum, String.Empty, new {@class = "text-danger"})
</div>
<div class="date4Chrome">
@Html.EditorFor(model => model.GeburtsdatumChromeEdit)
@Html.ValidationMessageFor(m => m.GeburtsdatumChromeEdit, String.Empty, new { @class = "text-danger" })
@*@Html.TextBoxFor(model => model.Geburtsdatum, "{0:dd.MM.yyyy}")
@Html.ValidationMessageFor(m => m.Geburtsdatum, String.Empty, new { @class = "text-danger" })*@
</div>
私はstackoverflowの上で見つかった機能(How can I tell if a browser supports <input type='date'>)では、実際のブラウザが使用している場合、私は検出することができます:私は日付の入力を倍増し、特別なクラスでのdivのことで2つのグループをカプセル化されたビューで
日付入力:
Iは、入力ブロックを削除し、次の機能では、私は必要はありません。
function switchForChrome() {
var isChrome = checkDateInput();
if (isChrome) {
$('.date4Normal').remove();
} else {
$('.date4Chrome').remove();
}
};
$(document).ready
関数では、私はswitchForChrome();
を呼び出します。
この時点では動作するようですが、日付の検証は失敗しました。
if (checkDateInput()) {
$.validator.addMethod('date',
function (value, element) {
return true;
});
}
をそして最後に、それは動作します:
は、だから私は(ASP.NET MVC 4 avoid generation of data-val-date for datetime)を回避するためにいくつかのコードを追加します。 私は元のプロパティ(Geburtsdatum
)を使用するので、言語固有のフォーマットを取得し、元のプロパティ(IE、Firefox)または新しいプロパティGeburtsdatumChromeEdit
(Chrome、Opera)を編集します。
残念しかし、私は理解していません、あなたは "あなたは日付フィールドの情報を使ってプロセスを数えます"ということを意味します。 – PBum
たとえば、ユーザーが指定した日付と年齢のパラメータに基づいて子供のFPP(生まれた年齢)を計算する必要がある場合 – sGermosen