次のモデルとビューモデルがあります。ExpiryDate は null 可能であることに注意してください。
public class Topic
{
public DateTime? ExpiryDate { get; set; }
// Other properties
}
public class TopicViewModel
{
public DateTime? ExpiryDate { get; set; }
// Other properties
}
コントローラーの編集メソッドでは、ビューにレンダリングするために次のように日付を設定しています。ビューはエディター テンプレートを使用して、次のようにテキスト ボックスを pikaday datepicker ウィジェットにバインドします。
// Controller method
public ActionResult EditTopic(Guid id)
{
var topic = _contect.GetTopic(id);
var viewModel = new TopicViewModel
{
ExpiryDate = topic.ExpiryDate
// Other mappings
};
return View(viewModel);
}
EditorTemplate-datepicker.cshtml
@model Nullable<System.DateTime>
<link rel="stylesheet" href='/content/pikaday/css/pikaday.css' />
<script src='/content/pikaday/moment.min.js'></script>
<script src='/content/pikaday/pikaday.js'></script>
<script src="/content/pikaday/plugins/pikaday.jquery.js"></script>
<script type="text/javascript">
$(function () {
$('.datepicker').pikaday({
firstDay: 1,
format: "DD MMM YYYY"
});
});
</script>
@Html.TextBox(string.Empty, ViewData.TemplateInfo.FormattedModelValue, new { @class = "datepicker form-control" })
これは私の見解です - EditTopic.cshtml
<div class="form-group">
@Html.LabelFor(model => model.ExpiryDate)
@Html.EditorFor(model => model.ExpiryDate)
@Html.ValidationMessageFor(model => model.ExpiryDate)
</div>
日付ピッカーが配線され、すべてが機能しますが、データベースから返された日付がテキストボックスに「DD MMM YYYY」の形式で表示されません。
たとえば、ExpiryDate が 2016-05-17 として保存されている場合、編集用に表示されると、0000 年 1 月 17 日として返されます。
日付が null でない場合、日付を DD MMM YYYY の形式にするにはどうすればよいですか?