我有以下模型和视图模型,注意 ExpiryDate 可以为空:
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 日
当日期不为空时,如何将日期格式化为 DD MMM YYYY?