如何在编辑器中的 MVC 4 日期时间中附加前导 0 对于 HTMLHelper

本文关键字:时间 对于 HTMLHelper 日期 编辑器 MVC | 更新日期: 2023-09-27 18:31:00

在日期时间的编辑视图中使用输入掩码时,我的 MVC 4 应用程序中遇到了问题。我正在使用的输入掩码强制将输入格式化为:"MM/dd/yyyy HH:mm"。这在尝试编辑之前效果很好。

输入"09/11/2013 07:00

"最终在我的编辑器帮助程序中看起来像"91/12/0137 30:00"。

如何强制"0"附加到小于两位数的月份和小时?

这是我的财产:

    [Required]
    [DataType(DataType.DateTime)]
    [Display(Name = "Begin Leave")]
    [DisplayFormat(DataFormatString = "MM/dd/yyyy HH:mm", ApplyFormatInEditMode = true)]
    public DateTime BeginLeave { get; set; }

这是我的 HtmlHelper 编辑器:

@Html.EditorFor(model => model.BeginLeave)

下面是输入掩码设置格式的位置:

    jQuery(function ($) {
        $("#BeginLeave").mask("99/99/9999 99:99");
    });

如何在编辑器中的 MVC 4 日期时间中附加前导 0 对于 HTMLHelper

我在使用 jquery 输入掩码时遇到了同样的问题,在填充日期时间值时,它会删除前导零。这是我的解决方案:

视图模型:

[Required]
[DataType(DataType.DateTime)]
[Display(Name = "Begin Leave")]
public DateTime BeginLeave { get; set; }

观点:

@Html.EditorFor(model => model.BeginLeave, "{0:MM/dd/yyyy HH:mm}")

注意:这也适用于@Html.TextBoxFor()

您应该向属性添加一个属性,如下所示:

    [DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy-MM-dd}")]
    public DateTimeOffset PublishedOn { get; set; }

请密切注意属性选项ApplyFormatInEditModeDataFormatString

还要检查您要发送回服务器的数据,您发送的输入可能有问题(例如,某些内容未正确序列化?

我能够通过为DateTime添加一个EditorTemplate来实现这一点。

这是通过将 PartView 添加到名为"System.DateTime"的 Shared/EditorTemplates 文件夹中来完成的,EditorTemplate 的代码为:

@model System.DateTime
@Html.TextBox("", Model == DateTime.MinValue ? "" : Model.ToString("MM/dd/YYYY HH:mm"))

这将根据需要返回输出。