Asp.net-Mvc-3

為什麼我的 DisplayFor 沒有循環通過我的 IEnumerable<DateTime>?

  • December 30, 2011

我認為這條線

@(Html.DisplayFor(m =&gt; m.DaysOfWeek, "_CourseTableDayOfWeek"))

哪裡m.DaysOfWeekIEnumerable&lt;DateTime&gt;

有_CourseTableDayOfWeek.cshtml的內容:

@model DateTime
@{
   ViewBag.Title = "CourseTableDayOfWeek";
}
&lt;th&gt;
   @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int) Model.DayOfWeek]
   &lt;span class="dateString"&gt;Model.ToString("G")&lt;/span&gt;
&lt;/th&gt;

我收到以下錯誤:

傳入字典的模型項的類型為“ System.Collections.Generic.List1[System.DateTime]”,但此字典需要類型為“ System.DateTime`”的模型項。

如果我參考以下文章:

<https://stackoverflow.com/a/5652524/277067>

DisplayFor應該循環遍歷 IEnumerable 並顯示每個項目的模板,不是嗎?

它不是循環的,因為您已將顯示模板的名稱指定為DisplayFor助手 ( _CourseTableDayOfWeek) 的第二個參數。

它僅在您依賴約定時才會循環,即

@Html.DisplayFor(m =&gt; m.DaysOfWeek)

然後在裡面~/Views/Shared/DisplayTemplates/DateTime.cshtml

@model DateTime
@{
   ViewBag.Title = "CourseTableDayOfWeek";
}
&lt;th&gt;
   @System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int) Model.DayOfWeek]
   &lt;span class="dateString"&gt;Model.ToString("G")&lt;/span&gt;
&lt;/th&gt;

一旦您為顯示模板指定了自定義名稱(作為 DisplayFor 幫助程序的第二個參數或作為[UIHint]屬性),它將不再循環收集屬性,並且模板將簡單地傳遞給IEnumerable&lt;T&gt;as 模型。

這很令人困惑,但就是這樣。我也不喜歡。

引用自:https://stackoverflow.com/questions/8678802