Asp.net-Mvc-3
為什麼我的 DisplayFor 沒有循環通過我的 IEnumerable<DateTime>?
我認為這條線
@(Html.DisplayFor(m => m.DaysOfWeek, "_CourseTableDayOfWeek"))哪裡
m.DaysOfWeek是IEnumerable<DateTime>。有_CourseTableDayOfWeek.cshtml的內容:
@model DateTime @{ ViewBag.Title = "CourseTableDayOfWeek"; } <th> @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int) Model.DayOfWeek] <span class="dateString">Model.ToString("G")</span> </th>我收到以下錯誤:
傳入字典的模型項的類型為“
System.Collections.Generic.List1[System.DateTime]”,但此字典需要類型為“System.DateTime`”的模型項。如果我參考以下文章:
<https://stackoverflow.com/a/5652524/277067>
DisplayFor應該循環遍歷 IEnumerable 並顯示每個項目的模板,不是嗎?
它不是循環的,因為您已將顯示模板的名稱指定為
DisplayFor助手 (_CourseTableDayOfWeek) 的第二個參數。它僅在您依賴約定時才會循環,即
@Html.DisplayFor(m => m.DaysOfWeek)然後在裡面
~/Views/Shared/DisplayTemplates/DateTime.cshtml:@model DateTime @{ ViewBag.Title = "CourseTableDayOfWeek"; } <th> @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int) Model.DayOfWeek] <span class="dateString">Model.ToString("G")</span> </th>一旦您為顯示模板指定了自定義名稱(作為 DisplayFor 幫助程序的第二個參數或作為
[UIHint]屬性),它將不再循環收集屬性,並且模板將簡單地傳遞給IEnumerable<T>as 模型。這很令人困惑,但就是這樣。我也不喜歡。