在我看来,我有一个日期字段(用于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})
}
答案 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" })