0

有没有办法在对象列表(IEnumerable)上使用 DataType 注释,这样当我在模板中使用 DisplayFor 时,它会正确格式化日期?

模型:

public class CallOverview
{

    [DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
    public IEnumerable<DateTime> Days { get; set; }

}

看法:

@foreach (var day in Model.Days)
{

    <p>@Html.DisplayFor(modelItem => day)</p>

}

输出:

31/07/2012 00:00:00
4

3 回答 3

1

我认为您看到这种行为的原因是因为您将 DataType 属性应用于枚举,而不是应用于其各个值。像这样的东西应该可以工作:

模型:

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; }
    }
}

看法:

@foreach (var day in Model.Days)
{
    <p>@Html.DisplayFor(m => day.Value)</p>    
}
于 2012-07-05T04:03:35.470 回答
0

你可以做你想做的事。您需要引入一个新类型以通过 EF 持久化集合。

有关详细信息,请参阅此答案:https ://stackoverflow.com/a/43773647/1742393

public class CallOverview
{

    [DataType(DataType.Date), DisplayFormat(DataFormatString = @"{0:dddd dd MMMM yyyy}")]
    public PersistableDateTimeCollection<DateTime> Days { get; set; }

}
于 2017-05-16T21:57:08.577 回答
-2

答案是做不到。

于 2012-08-09T03:27:19.320 回答