为简单起见,假设我有来自具有以下层次结构的对象模型的数据类:
- 作者
- 书
- 章节
- 书
这些数据类中的每一个只包含对其子代的实例的引用,而不是它们的父代,因为它们的父代只包含 Id。例如,Book 有 Book.Chapters,但它没有对其父级的引用(即:Book.Author),而是具有父级的 Id(即:Book.AuthorId)。
现在我想在我的视图中显示这个层次结构的“面包屑”。但要做到这一点,我需要获取诸如 Author.Name、Book.Name 之类的信息......所以在我看来,我有以下选项:
为每个视图创建自定义模型。即:新 SingleBookViewModel { TheAuthor = DB.GetAuthor(book.AuthorId), TheBook = book }
从书中获取视图本身的数据。因此,例如,如果我有书本视图,我将能够使用: Author author = GetAuthor(book.AuthorId)... 并在剃刀视图本身内执行此操作。
使用 Tuple 类传递数据。因此,为了查看章节,我使用具有以下签名的元组填充模型:
元组<作者、书籍、章节>
你会使用哪种方法?或者你会使用不同的东西吗?
目前我正在使用第三种方法,即元组。
第二种方法可能是最“标准”的。但是我不喜欢必须创建和维护与它们背后的每个数据类(作者、书籍、章节)相对应的视图模型类的想法。
我想了解人们围绕诸如此类的事情提出了哪些“最佳实践”……以及使用元组是否有意义。