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