为我的Timespan生成的编辑器只包括小时和分钟。我希望它是标准的,即hh:mm:ss。
我原本以为默认就是那个,我试过了。我也试过了
[DisplayName("Start Time")]
[DisplayFormat(DataFormatString = "{0:hh\\:mm\\:ss}", ApplyFormatInEditMode = true)]
[DataType(DataType.Time)]
public TimeSpan? StartTime { get; set; }
视图
<div class="form-group">
@Html.EditorFor(model => model.SearchCriteria.StartTime, new {htmlAttributes = new {@class = "form-control"}})
@Html.ValidationMessageFor(model => model.SearchCriteria.StartTime, "", new {@class = "text-danger"})
</div>
答案 0 :(得分:1)
您可以使用inputmask获取屏蔽/格式化效果:
@Html.EditorFor(model => model.SearchCriteria.StartTime, new {htmlAttributes = new {@class = "form-control time-mask"}})
添加对jquery.inputmask.bundle包的引用
使用输入掩码功能。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.3.4/jquery.inputmask.bundle.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.time-mask').inputmask("hh:mm:ss", {
placeholder: "hh:mm:ss",
showMaskOnHover: false
});
});
</script>
请记住TimeSpan
并非旨在表示一天中的时间,而是用于显示一段时间,因此TimeSpan
值为负值或超过24小时是正常的。
<强>更新强>
行为是正常的,因为[DataType(DataType.Time)]注释将添加type =&#34; time&#34; HTML中的输入元素,这是某些浏览器(如Chrome)但不使用FireFox时使用的HTML5属性。如果要使用注释,则需要添加属性step =&#34; 1&#34;编辑所以你的代码将是:
@Html.EditorFor(model => model.StartTime, new { htmlAttributes = new { @class = "form-control", @step = "1" } }).
请注意,这适用于Chrome,但不适用于FireFox,IE 11及更早版本。这就是我提出其他解决方案的原因。