使用TextBoxFor编辑时间
本文关键字:时间 编辑 TextBoxFor 使用 | 更新日期: 2023-09-27 18:24:15
我正在尝试使用TextBoxFor显示一个输入元素来编辑DateTime属性的时间(小时和分钟)。
在我的模型中,属性配置如下:
public DateTime Hour { get; set; }
在我看来:
@Html.TextBoxFor(model => model.Hora, "HH:mm", new { @class = "form-control" })
但它总是显示完整的日期和时间值,如:
11/25/2015 13:40:00
我只需要:
13:40
您也可以使用EditorFor而不是TextBoxFor,并在模型或viewModel中使用数据注释,如下所示:
[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:HH:mm}", ApplyFormatInEditMode = true)]
public DateTime Hour { get; set; }
然后在你看来,你使用:
@Html.EditorFor(model => model.Hour, new { @class = "form-control" })
您当然可以使用您想要的字符串格式。在下面的链接中,你会发现一个完整的参考:
https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
我一直在使用jQuery.DateTimePicker,并取得了相对的成功。
在您看来:
@Html.TextBoxFor(model => model.Hora, new { @class = "form-control" })
<script>
jQuery('#Hora').datetimepicker({
datepicker:false,
format:'H:i'
});
</script>
我在类中使用了一个辅助属性来解决这个问题,该属性将DateTime映射到一个已经格式化的字符串。
型号:
private DateTime hour;
[Required]
public DateTime Hour //this is my mapped property
{
get
{
return hour;
}
set
{
hour = value;
//update unmapped property
hourString = value.ToString("HH:mm");
}
}
private string hourString;
[NotMapped]
public string HourString {
get
{
return hourString;
}
set
{
hour = new DateTime(hour.Year, hour.Month, hour.Day, Convert.ToInt16(value.Substring(0, 2)), Convert.ToInt16(value.Substring(3, 2)), 0);
}
}