【问题标题】:Bootstrap Date Display Always in Wrong Format引导日期显示总是格式错误
【发布时间】:2016-06-24 14:51:24
【问题描述】:

我有一个看似简单的日期显示,当另一个“销售日期”DropDownBoxFor 被切换时,它显示默认的“开始日期”或 AJAX 结果日期。日期格式应设置为短日期,但显示始终以日期和时间格式显示。切换“销售日期”字段后,将检索相应“销售日期”的“开始日期”并显示为 RFC1123 日期!

型号:

public DateTime StartDate { get; set; }

剃须刀:

@Html.TextBoxFor(m => m.StartDate, "{0:d}", new { @readonly = "readonly", @class = "form-control" })

AJAX:

success: function (data) {
    var pattern = /Date\(([^)]+)\)/;
    var results = pattern.exec(data[0].StartDate);
    var dt = new Date(parseFloat(results[1]));
    $("#StartDate").val(dt);

将 TextBoxFor 更改为 DisplayFor 后,短日期正确显示,但在切换其他字段后不会更新。因此,我将 DisplayFor 包装在一个跨度中,并将 AJAX 中的 .val() 更改替换为 .html(),但切换后格式恢复为默认的错误日期和时间以及 RFC1123!谁能看到这里发生了什么?非常感谢!

【问题讨论】:

  • 你试过删除只读属性吗?检查这是否可能是您的问题的原因...
  • @RokumDev - 感谢您的回复,是的,我删除了只读文件,但仍然显示不正确的格式,只有这样它们才可编辑。

标签: javascript c# jquery ajax twitter-bootstrap


【解决方案1】:

我从来没有弄清楚为什么会发生这种情况,但我的解决方法实现了最终目标:我将 TextBoxFor 更改为 EditorFor,然后在使用切换时,脚本会将 html 文本更改为结果日期。

剃须刀:

<div class="startDate">
    @Html.EditorFor(m => m.StartDate, "DateTime", "StartDate", new { @class = "form-control" })
</div>

AJAX:

success: function (data) {
    var pattern = /Date\(([^)]+)\)/;
    var results = pattern.exec(data[0].StartDate);
    var dt = new Date(parseFloat(results[1]));
    $(".startDate").text((dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多