2

在我的编辑视图中为 DateTime 使用输入掩码时,我在 MVC 4 应用程序中遇到了问题。我正在使用的输入掩码强制输入格式为:“MM/dd/yyyy HH:mm”。在尝试进行编辑之前,这很有效。

在我的 EditorFor 助手中,输入“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 EditorFor:

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

这是输入掩码设置格式的地方:

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

3 回答 3

2

我在使用 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()

于 2014-05-27T02:50:11.350 回答
1

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

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

密切注意属性选项ApplyFormatInEditModeDataFormatString.

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

于 2013-09-11T13:43:12.670 回答
1

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

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

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

这将返回我需要的输出。

于 2013-09-11T14:46:42.780 回答