【问题标题】:How to remove time part from DateTime variable in MVC如何从 MVC 中的 DateTime 变量中删除时间部分
【发布时间】:2013-07-09 14:14:19
【问题描述】:

在我看来,我有一个日期字段(用于 Jquery 日期选择器),

@if (Model != null)
{
  if (Model.SubmitStartDate == DateTime.MinValue)
  {
    Model.SubmitStartDate = null;
  }                    
  @Html.TextBoxFor(m => m.SubmitStartDate , new { @Id = "SubmitStartDate", @readonly = "readonly", @Value = @Model.SubmitStartDate})
} 

在我的模型中我有:

[Required(ErrorMessage = "Please select a start date")]
[DisplayFormat(DataFormatString = "{0:d}")]
public DateTime? SubmitStartDate { get; set; }

但是在 UI 中我得到 10/07/2013 00:00:00 on load ,如何从中删除时间部分。我还需要 "dd-mm-yy" 格式的日期。有没有可能实现?

更新

我根据答案编辑了我的代码,并且我按照要求让它工作了,但是我遇到了一个问题。

当我使用@Html.EditorFor() 时,我的readonly 属性将不再起作用。我也尝试使用DisplayFor,但它没有意义,因为我将它用于 J-query Date Picker。有什么办法可以使该字段只读?

更新代码:

@if (Model != null)
{
  if (Model.SubmitStartDate == DateTime.MinValue)
  {
    Model.SubmitStartDate = null;
  }                    
  @Html.EditorFor(m => m.SubmitStartDate , new { type = "date", @Id = "SubmitStartDate", @readonly = "readonly", @Value = @Model.SubmitStartDate})
} 

【问题讨论】:

    标签: c# .net asp.net-mvc datetime razor


    【解决方案1】:

    您正在使用 @Html.TextBoxFor() 助手,它将忽略您的 DisplayFormat 属性。将其更改为 @Html.EditorFor() 并应用您的 DisplayFormat。

    并得到你的格式:

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yy}")]
    public DateTime? SubmitStartDate { get; set; }
    

    【讨论】:

    • 并将 DataFormatString 更改为“{0:dd-MM-yyyy}”
    • 为了完整起见:如果您只需要删除时间部分(我知道,这不是您唯一的要求),请添加属性[DataType(DataType.Date)]
    • 感谢您的回答,实际上它就像魅力一样工作:) 但是,当我使用 Editfor @Html.EditorFor(m => m.SubmitStartDate , new {type = "date", @Id = "SubmitStartDate ", @readonly = "readonly", @Value = @Model.SubmitStartDate }) 时,我的只读属性不再起作用
    • @FabioS 感谢您的提示 :)
    • @TBA,如果它是只读属性,请使用@Html.DisplayFor()。此外,使用 EditorForDisplayFor 的另一个优点是您可以为模型实现自定义模板(即模型的 HTML 和编辑字段应该呈现的内容)。
    【解决方案2】:

    这是我通常如何格式化数据注释以便在 chrome 和 IE 中工作。

    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
    public DateTime StartDate { get; set; }
    
    @Html.EditorFor(m => m.StartDate, new { type = "date" })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多