我正在尝试使用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
答案 0 :(得分:2)
您也可以使用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" })
您可以使用您想要的字符串格式。在下面的链接中,您将找到完整的参考:
答案 1 :(得分:0)
我一直在使用jQuery.DateTimePicker相对成功。
在您看来:
@Html.TextBoxFor(model => model.Hora, new { @class = "form-control" })
<script>
jQuery('#Hora').datetimepicker({
datepicker:false,
format:'H:i'
});
</script>
答案 2 :(得分:0)
我使用我的类中的辅助属性解决了这个问题,该属性将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);
}
}