0

我有以下模型和视图模型,注意 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?

4

1 回答 1

0

通过将以下数据属性添加到我的视图模型来管理修复:

[DisplayFormat(DataFormatString = "{0:d MMM yyyy}", ApplyFormatInEditMode = true)]
public DateTime? ExpiryDate { get; set; }
于 2016-06-16T12:18:06.167 回答