通常,当我在模型中使用[DisplayFormat(DataFormatString="{0:d}")]
属性和DateTime属性时,DateTime值只能正确显示日期部分。
但是,因为Edge(并且只有Edge)会覆盖Bootstrap Datepicker以显示自己的Datepicker,所以我必须将我的属性更改为以下内容(以模型中的一个属性为例):
[Required] [Display(Name="Start Date")] [DataType(DataType.Text)] // this is required to make Bootstrap // datepicker work with Edge [DisplayFormat(DataFormatString="{0:d}")] // this attribute is now ignored public DateTime? SelectedStartDate { get; set; }
换句话说,我必须将DateTime字段声明为文本,因此当我的页面呈现时,它看起来像这样。
当用户选择日期时,会显示正确的格式,以便将该部分固定下来。
<script> $(function () { var formatparam = {format:"mm/dd/yyyy", setDate: new Date(), autoclose: true }; $("#SelectedStartDate").datepicker(formatparam); $("#SelectedEndDate").datepicker(formatparam); }); </script>
我可以在模型或脚本块中声明某些内容,以便默认值仅显示为Date而不是DateTime吗?
答案 0 :(得分:0)
鉴于SelectedStartDate将是字符串
@string.Format("{0:d}", Model.SelectedStartDate)
答案 1 :(得分:0)
我经历了几次范式转换和重构。感谢@Steven Muecke的建议。
在早期的迭代中,我尝试过@Html.TextBoxFor(m => m.SelectedStartDate)
但没有成功。我不知道的是我还需要添加格式化字符串,所以它看起来像这样:
@ Html.TextBoxFor(m =&gt; m.SelectedStartDate,&#34; {0:d}&#34;)
所以我的模型更清洁:
[Required] [Display(Name="Start Date")] [DisplayFormat(DataFormatString="{0:d}")] public DateTime? SelectedStartDate { get; set; }
现在的行为是我需要的:默认视图被格式化为仅日期而不是日期时间。