在我的模型我在我的属性之一以下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删除此?

有帮助吗?

解决方案

在[DisplayFormat]属性仅在EditorFor / DisplayFor,而不是由原始HTML API,如TextBoxFor使用。

其他提示

由于布拉德说,不到风度工作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的日期选择器),所以EditorFor对我来说没有任何选项。

实现自定义帮手,梅索德解决我的问题:

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

辅助-了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);
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top