基本上,我有以下问题:
目前基本上就是这样。我可能还有一些问题要问,但这在过去一个小时左右一直困扰着我,我似乎可以在其他地方找到一致的指导。
编辑: 查看 CodePlex 上的示例NerdDinner 应用程序,看起来 ViewModels 是Controllers的一部分,但它们不在自己的文件中仍然让我感到不舒服。
我为每个视图创建了我称之为“ViewModel”的东西。我将它们放在我的 MVC Web 项目中名为 ViewModels 的文件夹中。我以它们所代表的控制器和操作(或视图)来命名它们。因此,如果我需要将数据传递给 Membership 控制器上的 SignUp 视图,我会创建一个 MembershipSignUpViewModel.cs 类并将其放入 ViewModels 文件夹中。
然后我添加了必要的属性和方法,以方便将数据从控制器传输到视图。我使用 Automapper 从我的 ViewModel 到 Domain Model 并在必要时再次返回。
这也适用于包含其他 ViewModel 类型的属性的复合 ViewModel。例如,如果您在成员控制器的索引页面上有 5 个小部件,并且您为每个局部视图创建了一个 ViewModel - 您如何将数据从索引操作传递给局部视图?您向 MyPartialViewModel 类型的 MembershipIndexViewModel 添加一个属性,并且在渲染局部时您将传入 Model.MyPartialViewModel。
这样做可以让您调整部分 ViewModel 属性,而无需更改索引视图。它仍然只是在 Model.MyPartialViewModel 中传递,因此当您所做的只是向部分 ViewModel 添加属性时,您必须通过整个部分链来修复某些东西的可能性较小。
我还将命名空间“MyProject.Web.ViewModels”添加到 web.config,以便允许我在任何视图中引用它们,而无需在每个视图上添加显式导入语句。只是让它更干净一点。