如何在编辑器中的 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");
});
我在使用 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; }
请密切注意属性选项ApplyFormatInEditMode
和DataFormatString
。
还要检查您要发送回服务器的数据,您发送的输入可能有问题(例如,某些内容未正确序列化?
我能够通过为DateTime添加一个EditorTemplate来实现这一点。
这是通过将 PartView 添加到名为"System.DateTime"的 Shared/EditorTemplates 文件夹中来完成的,EditorTemplate 的代码为:
@model System.DateTime
@Html.TextBox("", Model == DateTime.MinValue ? "" : Model.ToString("MM/dd/YYYY HH:mm"))
这将根据需要返回输出。