C# 如何将MVC 4 DateTime中的前导0追加到HTMLHelper的编辑器中?
我在MVC4应用程序中遇到了一个问题,在我的编辑视图中使用输入掩码的日期时间。我使用的输入掩码强制将输入格式化为:“MM/dd/yyyy HH:MM”。在尝试进行编辑之前,此操作非常有效 “09/11/2013 07:00”的输入在我的EditorFor helper中看起来像“91/12/0137 30:00” 如何强制将“0”附加到少于两位数的月份和小时? 这是我的财产:C# 如何将MVC 4 DateTime中的前导0追加到HTMLHelper的编辑器中?,c#,asp.net-mvc,asp.net-mvc-4,datetime,C#,Asp.net Mvc,Asp.net Mvc 4,Datetime,我在MVC4应用程序中遇到了一个问题,在我的编辑视图中使用输入掩码的日期时间。我使用的输入掩码强制将输入格式化为:“MM/dd/yyyy HH:MM”。在尝试进行编辑之前,此操作非常有效 “09/11/2013 07:00”的输入在我的EditorFor helper中看起来像“91/12/0137 30:00” 如何强制将“0”附加到少于两位数的月份和小时? 这是我的财产: [Required] [DataType(DataType.DateTime)] [Displa
[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");
});
您应该向属性添加一个属性,如下所示:
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy-MM-dd}")]
public DateTimeOffset PublishedOn { get; set; }
请密切注意属性选项ApplyFormatInEditMode
和DataFormatString
还要检查您要发送回服务器的数据,您发送的输入中可能有错误(例如某些数据未正确序列化?)您应该向属性添加一个属性,如下所示:
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:yyyy-MM-dd}")]
public DateTimeOffset PublishedOn { get; set; }
请密切注意属性选项ApplyFormatInEditMode
和DataFormatString
还要检查您发送回服务器的数据,您发送的输入中可能有错误(例如未正确序列化?)我可以通过为DateTime添加一个EditorTemplate来实现这一点 这是通过向名为“System.DateTime”的共享/EditorTemplates文件夹添加PartialView来完成的,EditorTemplate的代码为:
@model System.DateTime
@Html.TextBox("", Model == DateTime.MinValue ? "" : Model.ToString("MM/dd/YYYY HH:mm"))
这将返回我需要的输出。我可以通过为DateTime添加一个EditorTemplate来实现这一点 这是通过向名为“System.DateTime”的共享/EditorTemplates文件夹添加PartialView来完成的,EditorTemplate的代码为:
@model System.DateTime
@Html.TextBox("", Model == DateTime.MinValue ? "" : Model.ToString("MM/dd/YYYY HH:mm"))
这将返回我需要的输出。我在使用jquery输入掩码时遇到了同样的问题,在填充datetime值时,它会删除前导的零。以下是我的解决方案: ViewModel:
[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()。以下是我的解决方案: ViewModel:
[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()您能提供一些代码吗?输入掩码的确切含义是什么?它是jquery。下面是一个如何使用它的示例:您能提供一些代码吗?输入掩码的确切含义是什么?它是jquery。下面是一个如何使用它的示例:这并没有改变格式。视图仍以“9/10/2013 7:30:00 AM”的格式接收日期时间,当添加到带有输入掩码的文本框中时,该格式显示为“91/12/0137 30:00”,在没有输入掩码的情况下显示为“9/10/2013 7:30:00 AM”。如果可能的话,我需要将“09/10/2013 07:30”返回到我的视图。这并没有改变格式。视图仍以“9/10/2013 7:30:00 AM”的格式接收日期时间,当添加到带有输入掩码的文本框中时,该格式显示为“91/12/0137 30:00”,在没有输入掩码的情况下显示为“9/10/2013 7:30:00 AM”。如果可能的话,我需要让“09/10/2013 07:30”回到我的观点。