首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net MVC DisplayFormat

ASP.Net MVC DisplayFormat
EN

Stack Overflow用户
提问于 2010-01-05 03:52:23
回答 3查看 101.2K关注 0票数 49

在我的模型中,我的一个属性上有以下DataAnnotations

代码语言:javascript
复制
[Required(ErrorMessage = "*")]
[DisplayFormat(DataFormatString = "{0:d}")]
[DataType(DataType.Date)]
public DateTime Birthdate { get; set; }

所需的注释效果很好,我添加了另外两个注释来尝试删除时间。它被绑定到视图中的输入,使用

代码语言:javascript
复制
<%=Html.TextBoxFor(m => m.Birthdate, new { @class = "middle-input" })%>

但是,每当视图加载时,我仍然会在输入框中显示时间。有没有什么方法可以使用DataAnnotations来删除它呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-05 15:56:15

DisplayFormat属性只在EditorFor/DisplayFor中使用,而不是像TextBoxFor这样的原始HTML使用。

票数 90
EN

Stack Overflow用户

发布于 2012-04-30 17:36:01

正如布拉德所说,它不适用于TextBoxFor,但如果你想让它适用于EditorFor,你还需要记住添加ApplyFormatInEditMode。

代码语言:javascript
复制
[DataType(DataType.Date), DisplayFormat( DataFormatString="{0:dd/MM/yy}", ApplyFormatInEditMode=true )]
public System.DateTime DateCreated { get; set; }

然后使用

代码语言:javascript
复制
@Html.EditorFor(model => model.DateCreated)
票数 29
EN

Stack Overflow用户

发布于 2014-02-27 22:14:47

我的问题是设置了一些html属性(jquery-datepicker),所以EditorFor不是我的选择。

实现自定义的helper-methode解决了我的问题:

具有DateTime属性的ModelClass:

代码语言:javascript
复制
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime CustomDate{ get; set; }

以ModelClass作为模型的视图:

代码语言:javascript
复制
@Html.TextBoxWithFormatFor(m => m.CustomDate, new Dictionary<string, object> { { "class", "datepicker" } })

helper -静态帮助器类中的方法:

代码语言:javascript
复制
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);
    }
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2001756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档