對於一個例子簡單,可以說我有一個對象模型與下面的層級數據類:將分層數據傳遞給視圖的最佳實踐/首選項?
- 作者
- 書
- 章
- 書
每個這些數據類只有con爲他們的子女,而不是他們的父母提供實例的引用,他們只包含Id。例如,Book有Book.Chapters,但它沒有對其父(即:Book.Author)的引用,而是具有父代的Id(即:Book.AuthorId)。
現在我想在我的視圖中顯示這個層次結構的'breadcrumbs'。但要做到這一點,我需要得到的信息,如Author.Name,Book.Name ......所以,我看到它,我有以下選擇:
爲每個視圖創建自定義模式。即:new SingleBookViewModel {TheAuthor = DB.GetAuthor(book.AuthorId),TheBook = book}
從書中獲取視圖本身的數據。因此,例如,如果我有書視圖,我可以使用:Author author = GetAuthor(book.AuthorId)...並在剃鬚刀視圖內執行此操作。
使用Tuple類傳遞數據。因此,對於觀看的章節我會填上以下簽名的元組的型號:
Tuple<Author, Book, Chapter>
你會用哪種方法?或者你會使用不同的東西?
目前我正在使用第三種方法,Tuple。
第二種方法可能是最「標準」的。但我不喜歡必須創建和維護與每個數據類(作者,書,章)相對應的視圖模型類的想法。
我想了解人們在這方面所做的最佳實踐......以及使用元組是否合理。
不幸的是,Ajax/JSON無論如何不會幫助我,因爲數據是靜態的(意思是在視圖呈現後它不會改變)並且是'麪包屑'信息需要從用戶那裏顯示給用戶開始。 – Skonen 2012-04-12 09:01:46
然後創建一個ViewModel對象,它包裝所有你需要的數據,甚至是應該顯示在麪包屑中的數據。你的視圖只是呈現它收到的任何東西。這不工作嗎? – Dante 2012-04-12 09:25:52
是的。唯一的缺點是我在關於這些視圖模型的創建/維護命中的問題中提到。 – Skonen 2012-04-12 09:30:45