为简单起见,假设我有来自具有以下层次结构的对象模型的数据类:
这些数据类中的每一个都只包含对其子项的实例的引用,而不包含其父项的实例,对于它们的父项,它们仅包含Id。例如,Book有Book.Chapters,但它没有对其父级的引用(即:Book.Author),而是它具有父级的Id(即:Book.AuthorId)。
现在我想在我的视图中为此层次结构显示“breadcrumbs”。但要这样做,我需要获取诸如Author.Name,Book.Name等信息......所以我看到它有以下选项:
为每个视图创建自定义模型。即:新的SingleBookViewModel {TheAuthor = DB.GetAuthor(book.AuthorId),papers = book}
从书中获取视图中的数据。因此,如果我有书籍视图,我可以使用:作者author = GetAuthor(book.AuthorId)...并在剃刀视图中进行此操作。
使用Tuple类传递数据。因此,为了查看章节,我使用具有以下签名的元组填充模型:
Tuple<Author, Book, Chapter>
您会使用哪种方法?或者你会使用不同的东西吗?
目前我正在使用第三种方法,使用元组。
第二种方法可能是最“标准”的。但我不喜欢必须创建和维护与其背后的每个数据类(作者,书籍,章节)相对应的视图模型类的想法。
我想了解人们对此类内容的“最佳实践”......以及使用元组是否有意义。
答案 0 :(得分:1)
我会用ViewModels实现这个。您的每个视图都将强大地输入到ViewModel,该视图将包含该视图所需的所有数据。您将在该ViewModel中获得一组作者,其中包含一系列书籍,其中包含一组章节。
作为替代方案,您可以将View绑定到作者集合,并在选择作者后,向控制器的操作发出ajax get请求,以返回Json格式的书籍。这同样适用于章节。