如何从MVC中的DateTime变量中删除时间部分

时间:2013-07-09 14:14:20

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

在我看来,我有一个日期字段(用于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 ,如何从中删除时间部分。另外,我要求格式为“dd-mm-yy”的日期。有可能实现吗?

更新

我根据答案编辑了我的代码,并按照要求运行了,但是我遇到了问题。

当我使用@Html.EditorFor()时,我的readonly属性将不再有效。我也尝试使用DisplayFor,但是因为我将它用于J查询日期选择器,所以没有意义。有什么方法可以让那个字段只读?

更新代码:

@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})
} 

2 个答案:

答案 0 :(得分:15)

您正在使用@Html.TextBoxFor()帮助程序,它会忽略您的DisplayFormat属性。将其更改为@Html.EditorFor(),即可应用您的DisplayFormat。

并获得您的格式:

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

答案 1 :(得分:1)

以下是我通常格式化数据注释以便在chrome和IE中工作的方法。

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

@Html.EditorFor(m => m.StartDate, new { type = "date" })