1

为简单起见,假设我有来自具有以下层次结构的对象模型的数据类:

  • 作者
      • 章节

这些数据类中的每一个只包含对其子代的实例的引用,而不是它们的父代,因为它们的父代只包含 Id。例如,Book 有 Book.Chapters,但它没有对其父级的引用(即:Book.Author),而是具有父级的 Id(即:Book.AuthorId)。

现在我想在我的视图中显示这个层次结构的“面包屑”。但要做到这一点,我需要获取诸如 Author.Name、Book.Name 之类的信息......所以在我看来,我有以下选项:

  1. 为每个视图创建自定义模型。即:新 SingleBookViewModel { TheAuthor = DB.GetAuthor(book.AuthorId), TheBook = book }

  2. 从书中获取视图本身的数据。因此,例如,如果我有书本视图,我将能够使用: Author author = GetAuthor(book.AuthorId)... 并在剃刀视图本身内执行此操作。

  3. 使用 Tuple 类传递数据。因此,为了查看章节,我使用具有以下签名的元组填充模型:

    元组<作者、书籍、章节>

你会使用哪种方法?或者你会使用不同的东西吗?

目前我正在使用第三种方法,即元组。

第二种方法可能是最“标准”的。但是我不喜欢必须创建和维护与它们背后的每个数据类(作者、书籍、章节)相对应的视图模型类的想法。

我想了解人们围绕诸如此类的事情提出了哪些“最佳实践”……以及使用元组是否有意义。

4

1 回答 1

1

我会用 ViewModels 来实现它。您的每个视图都将被强类型化为包含该视图所需的所有数据的 ViewModel。您会在该 ViewModel 中获得一组 Authors,其中包含一组书籍,其中包含一组章节。

作为替代方案,您可以将视图绑定到作者集合,并在选择作者后向控制器的操作发出 ajax get 请求,该操作以 Json 格式返回书籍。这同样适用于章节。

于 2012-04-12T08:13:39.697 回答