C# DateTime对象列表上的数据类型批注(ASP.NET MVC/Entity Framework)
是否有某种方法可以在对象列表(IEnumerable)上使用数据类型注释,以便在模板中使用DisplayFor时正确格式化日期 型号:C# DateTime对象列表上的数据类型批注(ASP.NET MVC/Entity Framework),c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,是否有某种方法可以在对象列表(IEnumerable)上使用数据类型注释,以便在模板中使用DisplayFor时正确格式化日期 型号: public class CallOverview { [DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")] public IEnumerable<DateTime> Days { get; set; } } p
public class CallOverview
{
[DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
public IEnumerable<DateTime> Days { get; set; }
}
public class CallOverview
{
public IEnumerable<DateTimeWrapper> Days { get; set; }
public class DateTimeWrapper
{
[DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
public DateTime Value { get; set; }
}
}
我认为您看到这种行为的原因是,您正在将DataType属性应用于枚举,而不是其单个值。不过,类似的方法应该可以奏效: 型号:
public class CallOverview
{
[DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
public IEnumerable<DateTime> Days { get; set; }
}
public class CallOverview
{
public IEnumerable<DateTimeWrapper> Days { get; set; }
public class DateTimeWrapper
{
[DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
public DateTime Value { get; set; }
}
}
公共类调用概述
{
公共IEnumerable天{get;set;}
公共类日期时间包装器
{
[DataType(DataType.Date),DisplayFormat(DataFormatString=@“{0:dddd-dd-MMMM-yyyy}”)]
公共日期时间值{get;set;}
}
}
视图:
@foreach(Model.Days中的var日)
{
@Html.DisplayFor(m=>day.Value)
}
答案是这是不可能的。你可以做你想做的事。您需要引入一个新类型来通过EF持久化集合
有关详细信息,请参阅此答案:
公共类调用概述
{
[DataType(DataType.Date),DisplayFormat(DataFormatString=@“{0:dddd-dd-MMMM-yyyy}”)]
公共PersistableDateTimeCollection天数{get;set;}
}
这样可以,但有点冗长。如果能够像[DataTypeEnumerable(DataType.Date)]
@foreach (var day in Model.Days)
{
<p>@Html.DisplayFor(m => day.Value)</p>
}
public class CallOverview
{
[DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
public PersistableDateTimeCollection<DateTime> Days { get; set; }
}