String format tanggal tertentu tidak ditampilkan dalam mode Edit [duplikat]

Saya memiliki Atribut Tampilan berikut

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime? StartDate { get; set; }

Ini ditampilkan dengan benar di Halaman Indeks saya dan juga halaman Edit saya

Index.cshtml (daftar item)

 @Html.DisplayFor(modelItem => item.StartDate)

Sunting.cshtml

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

Namun format tanggal harus dalam format dd/MMM/yyyy mis. 20/Okt/2015, jadi saya ubah atribut tampilan menjadi

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MMM/yyyy}")]
public DateTime? StartDate { get; set; }

Di Index.cshtml saya ditampilkan dengan benar pada 20/Okt/2015.

Masalahnya adalah ketika saya membukanya di Edit.cshtml, itu tidak memuat nilai properti yang diteruskan ke ViewModel tetapi menampilkan nilainya seperti

masukkan deskripsi gambar di sini

  1. Mengapa {0:yyyy-MM-dd} berfungsi tetapi "{0:dd/MMM/yyyy} tidak berfungsi?

  2. Cara membuatnya bekerja?


person devfric    schedule 23.10.2015    source sumber
comment
Karena Anda menghasilkan browser datepicker yang memerlukan tanggal dalam format ISO (yyyy-MM-dd) (tidak ini hanya berfungsi di Chrome dan akan menghasilkan kotak teks normal di IE & FireFox   -  person    schedule 23.10.2015
comment
Sebaliknya EditorFor() gunakan @Html.TextBoxFor(m => m.StartDate, "{0:yyyy-MM-dd}", new { @class = "control-label col-md-2" }) dan simpan DataFormatString untuk digunakan oleh DisplayFor()   -  person    schedule 23.10.2015