Asp.net mvc 向视图传递分层数据的最佳实践/首选项?
为了简化示例,假设我有一个对象模型中的数据类,具有以下层次结构:Asp.net mvc 向视图传递分层数据的最佳实践/首选项?,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,为了简化示例,假设我有一个对象模型中的数据类,具有以下层次结构: 作者 书 章节 这些数据类中的每一个都只包含对其子类实例的引用,而不包含其父类实例的引用。对于其父类,它们只包含Id。例如,Book有Book.Chapters,但它没有对其父类(即Book.Author)的引用,而是具有父类的Id(即Book.AuthorId) 现在我想在视图中显示这个层次结构的“面包屑”。但要做到这一点,我需要获得诸如作者。姓名,书籍。姓名。。。因此,在我看来,我有以下选择: 为每个视图创建自定义
- 作者
- 书
- 章节
- 书
我想了解人们在这类事情上采取了哪些“最佳实践”。。。以及使用元组是否有意义。我将用ViewModels实现这一点。每个视图都将强类型化为ViewModel,该ViewModel将包含该视图所需的所有数据。您可以在该视图模型中获得一组作者,其中包含一组书籍,其中包含一组章节
作为替代方案,您可以将视图绑定到作者集合,并在选择作者后向控制器的操作发出ajaxget请求,该操作以Json格式返回书籍。这同样适用于章节。我将使用ViewModels实现这一点。每个视图都将强类型化为ViewModel,该ViewModel将包含该视图所需的所有数据。您可以在该视图模型中获得一组作者,其中包含一组书籍,其中包含一组章节
作为替代方案,您可以将视图绑定到作者集合,并在选择作者后向控制器的操作发出ajaxget请求,该操作以Json格式返回书籍。这同样适用于章节。不幸的是,Ajax/JSON无论如何都不会帮助我,因为数据是静态的(意味着在视图“呈现”后它不会改变),并且是“面包屑”,需要从一开始就向用户显示信息。然后创建一个ViewModel对象,包装您需要的所有数据,甚至应该显示在面包屑中的数据。您的视图只渲染它接收到的任何内容。这不管用吗?是的。唯一的缺点是我在问题中提到的关于这些视图模型的创建/维护的问题。正确,但是由于您的视图需要越来越多的数据,甚至可能是不相关的数据,您必须找到一种方法将其提供给视图。ViewModel非常完美,因为您可以轻松地向其添加其他属性。此外,如果您将所有数据整齐地打包到ViewModel中,那么最终会得到一个只显示所获得内容的视图(包括面包屑),这本身就是一个很好的做法。不幸的是,Ajax/JSON无论如何都不会帮助我,因为数据是静态的(这意味着在“呈现”视图后它不会更改)作为“面包屑”,信息需要从一开始就显示给用户。然后创建一个ViewModel对象,该对象包装您需要的所有数据,甚至应该显示在面包屑中的数据。您的视图只渲染它接收到的任何内容。这不管用吗?是的。唯一的缺点是我在问题中提到的关于这些视图模型的创建/维护的问题。正确,但是由于您的视图需要越来越多的数据,甚至可能是不相关的数据,您必须找到一种方法将其提供给视图。ViewModel非常完美,因为您可以轻松地向其添加其他属性。此外,如果您将所有数据整齐地打包到ViewModel中,那么最终会得到一个只显示所有数据的视图(包括面包屑),这本身就是一个很好的实践。