在我的模型中,我的一个属性
上有以下DataAnnotations[Required(ErrorMessage = "*")]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime Birthdate { get; set; }
所需的注释效果很好,我添加了其他2来尝试删除时间。它使用
绑定到视图中的输入<%=Html.TextBoxFor(m => m.Birthdate, new { @class = "middle-input" })%>
然而,每当视图加载时,我仍然会在输入框中显示时间。无论如何使用DataAnnotations删除它?
答案 0 :(得分:87)
[DisplayFormat]属性仅用于EditorFor / DisplayFor,而不是像TextBoxFor这样的原始HTML API。
答案 1 :(得分:28)
正如Brad所说,它不适用于TextBoxFor,但如果你想让它适用于EditorFor,你还需要记住添加ApplyFormatInEditMode。
[DataType(DataType.Date), DisplayFormat( DataFormatString="{0:dd/MM/yy}", ApplyFormatInEditMode=true )]
public System.DateTime DateCreated { get; set; }
然后使用
@Html.EditorFor(model => model.DateCreated)
答案 2 :(得分:8)
我的问题是设置了一些html属性(jquery-datepicker),所以EditorFor对我来说别无选择。
实现自定义帮助程序 - 方法解决了我的问题:
具有DateTime-Property的ModelClass:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime CustomDate{ get; set; }
使用ModelClass作为模型进行查看:
@Html.TextBoxWithFormatFor(m => m.CustomDate, new Dictionary<string, object> { { "class", "datepicker" } })
静态助手类中的Helper-Methode:
public static class HtmlHelperExtension {
public static MvcHtmlString TextBoxWithFormatFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IDictionary<string, object> htmlAttributes) {
ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
return htmlHelper.TextBox(htmlHelper.ViewData.TemplateInfo.GetFullHtmlFieldName(metadata.PropertyName), string.Format(metadata.DisplayFormatString, metadata.Model), htmlAttributes);
}
}