【问题标题】:Value of datepicker textfield is wrong日期选择器文本字段的值错误
【发布时间】:2016-07-18 06:15:16
【问题描述】:

我有以下剃须刀

<td>@Html.TextBoxFor(m => m.MeetingToEdit.StartTime, new { @class = "datetimepicker form-control", @Value = Model.MeetingToEdit.StartTime })</td>

我从控制器访问日期

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult UpdateMeetingWithId([Bind(Prefix = "MeetingToEdit")]Meeting model)
    {
        Meeting meeting = meetingsContext.Meetings.Where(a => a.Id == model.Id).First();
        meeting.Title = model.Title;
        meeting.StartTime = model.StartTime;
        meeting.EndTime = model.EndTime;
        meetingsContext.Entry(meeting).State = System.Data.Entity.EntityState.Modified;
        meetingsContext.SaveChanges();
        return RedirectToAction("ReinviteVisitor2", "Home", new { visitorId = model.SubjectId });
    }

因此,在调试 chtml 时,Model.MeetingToEdit.StartTime 是正确的,但是当它显示在网页的文本框中时,它是错误的并变为“Jan 14, 0044 12:00 AM”。确保日期时间在文本字段中正确显示的正确方法是什么?

编辑: 我正在使用 bootstrap datetimepicker,它的配置如下:

<script>
$(document).ready(function () {
    $('.datetimepicker').datetimepicker({
        format: 'lll'
    });
});
</script>

【问题讨论】:

  • 在使用HtmlHelper 方法时,切勿设置value 属性。 StartTime 的值是多少,您希望它如何格式化?你提到了一个 DatePicker - 你使用的是什么 jquery DatePicker?
  • 好的,我取消了属性值。但是现在 StartTime 和 EndTime 是空的。我认为是因为格式不正确?
  • 再次,StartTime 的值是多少,你想如何显示它?
  • StartTime 和 EndTime 是 DateTimes,我希望它显示为 'Mon 18 Jul 2016 4:32 PM'
  • 那么它将是@Html.TextBoxFor(m =&gt; m.MeetingToEdit.StartTime, "{0: ddd dd MMM yyyy h:mm tt}", new { @class = "datetimepicker form-control" }),但您可能无法在提交时将其绑定回您的模型

标签: asp.net asp.net-mvc


【解决方案1】:

明确指定日期格式,即

@Html.TextBoxFor(m => m.MeetingToEdit.StartTime.ToString("M/d/yyyy"), new { @class= "datetimepicker form-control", @Value = Model.MeetingToEdit.StartTime })

`some other formats u can apply like :

// 不带/带前导零的月/日数字 String.Format("{M/d/yyyy}"); // “2008 年 3 月 9 日” String.Format("{MM/dd/yyyy}"); // “03/09/2008”

// 日/月名称 String.Format("{ddd, MMM d, yyyy}"); //“2008 年 3 月 9 日,星期日” String.Format("{dddd, MMMM d, yyyy}"); // “2008 年 3 月 9 日,星期日”

// 两位/四位年份 String.Format("{MM/dd/yy}"); // “08 年 3 月 9 日” String.Format("{MM/dd/yyyy}"); // “2008 年 3 月 9 日” `

【讨论】:

  • 我得到了这一行的 InvalidOperationException @Html.TextBoxFor(m => m.MeetingToEdit.StartTime.ToString("M/d/yyyy"), new { @class= "datetimepicker form-control " })
【解决方案2】:

查看this link。基本上你有两个选择。在您的视图模型中设置 DisplayFormat 注释以定义日期格式。在这种情况下,您需要在视图中使用 EditorFor 辅助方法,而不是 TextBoxFor

第二个选项是将日期格式传递给TextBoxFor 辅助方法。提供的链接中有示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2019-12-16
    相关资源
    最近更新 更多