สตริงรูปแบบวันที่ที่ระบุไม่แสดงในโหมดแก้ไข [ซ้ำกัน]

ฉันมีแอตทริบิวต์การแสดงผลดังต่อไปนี้

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

ซึ่งแสดงผลได้อย่างถูกต้องทั้งในหน้าดัชนีของฉันและหน้าแก้ไขของฉัน

Index.cshtml (รายการ)

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

แก้ไข.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>

อย่างไรก็ตาม รูปแบบวันที่จะต้องอยู่ในรูปแบบ dd/MMM/yyyy เช่น 20/Oct/2015 ดังนั้นฉันจึงเปลี่ยนแอตทริบิวต์การแสดงผลเป็น

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

ใน Index.cshtml ของฉันแสดงอย่างถูกต้องเป็น 20/Oct/2015

ปัญหาคือเมื่อฉันเปิดมันใน Edit.cshtml มันจะไม่โหลดค่าคุณสมบัติที่ส่งผ่านไปยัง ViewModel แต่แสดงค่าเป็นดังนี้

ป้อนคำอธิบายรูปภาพที่นี่

  1. เหตุใด {0:yyyy-MM-dd} จึงทำงานได้แต่ไม่ทำงาน "{0:dd/MMM/yyyy}

  2. จะทำให้มันทำงานได้อย่างไร?


person devfric    schedule 23.10.2015    source แหล่งที่มา
comment
เนื่องจากคุณสร้างเบราว์เซอร์ datepicker ซึ่งต้องมีวันที่อยู่ในรูปแบบ ISO (yyyy-MM-dd) (ไม่ใช่ใช้ได้เฉพาะใน Chrome เท่านั้นและจะสร้างกล่องข้อความปกติใน IE และ FireFox   -  person    schedule 23.10.2015
comment
แต่ให้ EditorFor() ใช้ @Html.TextBoxFor(m => m.StartDate, "{0:yyyy-MM-dd}", new { @class = "control-label col-md-2" }) และเก็บ DataFormatString ไว้ใช้ภายใน DisplayFor()   -  person    schedule 23.10.2015