0

次のモデルとビューモデルがあります。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 の形式にするにはどうすればよいですか?

4

1 に答える 1