我有一个视图,需要以 "dd/MM/yyyy" 格式显示日期。
实际上,它显示为:
数据是使用 EF 从数据库中检索的。我该怎么办?
实际上,它显示为:
@Html.LabelFor(model => model.DtNews)
,我不知道在哪里和如何使用 Format() 函数。数据是使用 EF 从数据库中检索的。我该怎么办?
@Html.LabelFor(model => model.DtNews)
,我不知道在哪里和如何使用 Format() 函数。@Html.LabelFor(model => model.DtNews)
@Html.EditorFor(model => model.DtNews)
在您的视图模型上,您可以使用 [DisplayFormat]
属性。
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DtNews { get; set; }
现在你可能会告诉我,这个类是由EF框架生成的,对此我会回答你:你不应该在视图中使用EF自动生成的模型。你应该定义和使用视图模型。视图模型是专门根据视图要求定制的类。例如,在这个特定的视图中,您需要以特定的方式格式化日期:这正是视图模型的完美适用场景:
public class MyViewModel
{
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DtNews { get; set; }
}
如果您的控制器操作需要查询存储库并获取域模型(EF自动生成的实体),并将其映射到视图模型。然后,它将向视图传递此视图模型。
我会在你的model.DtNews
上添加一个伙伴类
伙伴类将装饰你现有的模型
[MetadataType(NewsMetadata)]
public partial class News // this is the same name as the News model from EF
{ /* ... */ }
/* Metadata type */
public class NewsMetadata
{
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime DtNews { get; set; }
}
@Model.DtNews.Value.ToString("dd-MM-yyyy")
DtNews
是一个 DateTime
,那么尝试这样做:@Html.LabelFor(model => model.DtNews.ToString("dd/MM/yyyy"));
使用以下代码
@Html.TextBoxFor(m => m.MktEnquiryDetail.CallbackDate, "{0:dd/MM/yyyy}")