ASP.Net MVC DisplayFormat
在我的模型中,我的一个属性中有以下DataAnnotations
[Required(ErrorMessage = "*")] [DisplayFormat(DataFormatString = "{0:d}")] [DataType(DataType.Date)] public DateTime Birthdate { get; set; } 
所需的注释很好,我添加了另外两个尝试和删除时间。 它被绑定到视图中的input使用
 <%=Html.TextBoxFor(m => m.Birthdate, new { @class = "middle-input" })%> 
然而,无论何时加载视图,我仍然可以看到input框中显示的时间。 有反正使用DataAnnotations删除这个?
[DisplayFormat]属性仅用于EditorFor / DisplayFor,而不是像TextBoxFor这样的原始HTML API。
正如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) 
我的问题是设置一些HTML属性(jQuery的dateselect器),所以EditorFor不适合我。
实现一个自定义的帮手方法解决了我的问题:
具有DateTime属性的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); } }