1

我正在学习 ASP.NET MVC 并查看 ASP.NET MVC 示例应用程序NerdDinner

  1. 文件夹“Models”包含一个名为Dinner.cs. 这是主要的晚餐实体。这堂课不应该在其他地方吗?例如“域”?而是应该将 viewmodel 类放在包含晚餐信息的 Models 文件夹中吗?

  2. 为什么位于名为:“Helpers”的文件夹中的文件“PaginatedList.cs”。这个文件不应该在文件夹中:“模型”,因为它是提供给视图的吗?

对此的任何澄清将不胜感激!

4

2 回答 2

1
  1. 当然,你的想法是对的。NerdDinner 仅用于概念演示目的,并没有真正假装所有最佳实践。随着您自己的项目的增长,它变得越来越明显。您将在单独的文件夹中拥有域实体/服务/存储库,然后是单独的项目,然后可能是单独的解决方案。您会发现自己将这个文件夹重命名为,ViewModels以使其对从事项目工作的其他人更加明显。

  2. PaginatedList 可以是 ViewModel 并包含与分页相关的数据。然后可以放入ViewModels文件夹。但我相信你在 NerdDinner 中所拥有的 - 只是一个简单的 View 助手来生成分页标记。此外,助手可能不是那么严格的“视图”或“视图模型”——它们可以包含简单的逻辑,它们在某种程度上处于视图和视图模型之间的中间:)。另请注意, PaginatedList 更多的是“框架”问题,而不是“特定解决方案”。所以你不能把它放在项目特定的东西中的“视图”或“模型”文件夹中。所以“Helpers”对于 NerdDinner 来说已经足够好了。在一个真正的解决方案中,你最好让它通用,将它包含在 MVC 之上的“框架”中。

于 2011-02-26T19:39:26.713 回答
1

对于第一个问题,该Dinner.cs文件包含类的一部分Dinner以及伙伴类的一些验证属性。恕我直言,将此文件放入Model文件夹中是完全理智的,因为它实际上是解决方案模型的一部分。

对于您的第二个问题,这PaginatedList是一种数据结构,它允许您一次查看数据的某个“页面”(一组固定的元素)。我真的不认为它是一个ViewModel,“帮助者”正是它的本质。

我想补充的另一件事是,如果您有一些 ViewModels 传递给您的视图而不是实际的模型类,或者因为您有一组特定的数据元素要传递,我认为有一个单独的ViewModel文件夹。

希望这可以帮助 :)

于 2011-02-26T19:51:03.463 回答