MVC C#中如何让@Html.DisplayFor仅显示DateTime字段的日期部分
解决MVC C#视图中DateTime仅显示日期部分的问题
嗨,这个场景我太熟悉了——既要保留DateTime类型满足其他业务逻辑,又要在视图里只显示日期部分,给你几个实用的方案:
方案一:给模型属性添加数据注解(推荐,统一控制格式)
虽然不能修改属性的DateTime类型,但可以给它加上DisplayFormat特性来指定显示格式:[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = false)] public DateTime fec_ini { get; set; }解释一下:
{0:dd/MM/yyyy}是指定日期格式为“日/月/年”ApplyFormatInEditMode = false表示在编辑模式下(比如用EditorFor)还是保留完整的DateTime格式,如果需要编辑时也显示短日期,把这个值改成true就行
之后视图里依然用@Html.DisplayFor(model => model.fec_ini),就能自动显示成29/04/2018了
方案二:直接在视图中格式化(快速临时解决)
如果只是这个视图需要特殊格式,不想改动模型的话,可以直接在视图里对DateTime对象调用ToString方法指定格式:@Html.DisplayFor(model => model.fec_ini.ToString("dd/MM/yyyy"))或者更简洁的写法:
@Model.fec_ini.ToString("dd/MM/yyyy")方案三:使用DisplayTemplate(多视图复用格式)
如果很多视图都需要显示这种格式的日期,可以创建一个通用的显示模板:- 在
Views/Shared/DisplayTemplates目录下新建一个名为ShortDate.cshtml的视图文件 - 写入以下内容:
@model DateTime @Model.ToString("dd/MM/yyyy") - 在需要的视图里调用:
@Html.DisplayFor(model => model.fec_ini, "ShortDate")
这样所有引用这个模板的地方都会统一显示短日期,后续要改格式只需要修改模板文件就行
- 在
内容的提问来源于stack exchange,提问作者Pablo Tobar
相关产品推荐
相关产品推荐

