2012-07-04 54 views
0

是否有某種方法在對象的列表(IEnumerable)上使用DataType註釋,以便當我在我的模板中使用DisplayFor時,它將格式化日期是否正確?DateTime對象(ASP.NET MVC /實體框架)列表上的DataType註釋

型號:

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 

回答

-2

答案是不能完成的。

1

我想你看到這種現象的原因是因爲你所申請的數據類型屬性的枚舉,而不是其個人價值。這樣的事情應該工作,雖然:

型號:

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>  
} 
+0

這將工作,但它有點冗長。會很高興能夠做一些像[DataTypeEnumerable(DataType.Date)] – NoPyGod

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

}