如果你只需要顯示一個人的細節;你應該考慮只發送一個人的視圖,而不是完整的人員名單。在這種情況下,
Model.Surname
會像那樣工作。因此,而不是:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<RegistryTest.Models.Person>>"
做
Inherits="System.Web.Mvc.ViewPage<RegistryTest.Models.Person>"
在這種情況下,一個人被加載到你的模型和Model.Property工作正常。如果你想要一個IENumerable <>,想想這意味着什麼。你正在發送一個人名單,所以你的「模型」中唯一的人是一個人數不可少的人。如果您調用Model,視圖就無法知道您想要什麼。屬性,因爲在模型中有多個對象,並且視圖不知道你想從哪個對象獲取屬性。底線,如果你想調用Model.Property(Model.surname),但也想發送一個IENumerable,你有一個設計缺陷。如果你發送一個列表,你應該對整個列表進行一些操作(迭代並對內容做些什麼)。如果你只想在列表中的某個人做某件事,重新設計你的視圖/控制器併發送給那個人;那麼你可以使用Model.Property。
//編輯基於評論 在我看來,現在無論你想要做的這兩件事一個(我不知道是哪個):
- 顯示項目的記錄在你的在表中列出並將表中顯示的當前對象的DisplayName放在標題中。
- 顯示錶格中的所有項目並在標題中放置某種DisplayName。這樣做的意義不大,但可能是您的意思是要列出您的名單。
情況1 這是工作作爲你的代碼的其餘部分?以下將工作得很好。
<% foreach (var item in Model) { %>
<table>
<th>item.DisplayName</th>
<tr>
<td>item.Property1</td>
<td>item.Property2</td>
</tr>
</table>
<% } %>
情況2 如果你想在列表的顯示名稱(??),你應該創建一個包含人的IEnumerable和一個公共字符串LISTNAME一個視圖模型。現在,你可以這樣做:
<table>
<th>Model.ListName</th>
<% foreach (var item in Model) { %>
<tr>
<td>item.Property1</td>
<td>item.Property2</td>
</tr>
<% } %>
</table>
這將創建一個表與表(在視圖模型給出)爲標題的名稱,並在你有你的人表項。
設計問題? 但是,我希望看到你在上面的問題中寫入更多信息。給我們更多關於你想要做什麼的信息。你想一個接一個地顯示每個人的記錄嗎?在這種情況下,我會建議您創建一個局部視圖你放桌子的地方。然後你會得到這樣的:
<% foreach (var item in Model) { %>
<% Html.RenderPartial("TablePerson",item); %>
<% } %>
tableperson.ascx:恐怕:)
OK
因此,我們需要更多的信息,所以你只想要顯示的第一記錄,還是希望在模型中的項目上顯示所有姓氏會更容易?我有點困惑...... – 2011-05-24 16:00:41
不,我不想和記錄無關。我想要顯示已在模型中爲屬性「姓氏」設置的「DisplayName」。我已經更新了一下我的問題。 – Niklas 2011-05-25 06:57:48
但是您發送的IENumerable <>沒有「姓氏」,它不是Person對象,它是一個IENumerable <>個人。如果你不想要任何與物品有關的事情,你應該重新考慮你的設計。 – bastijn 2011-05-25 07:15:10