我有以下真实场景,为了这个例子而稍微简化了
我有一个对象,我们称之为Movie,它将由几个属性组成,例如
我需要能够有一个可以输入新电影的表格,表格上有以下元素:
使用asp.net mvc组织我的代码有一个明确的方法,请概述
到目前为止我已经
了但我不清楚actor / genres数组如何适应这个以及我在哪里获取它的数据....它是否进入IMovieRepository接口?我是否为它创建了另一个界面,换句话说,我是否为ViewModel创建了一个界面?我是否也创建了一个用于获取类型的界面? 另一个问题: 我如何使用ViewModels?我是否需要更改应用程序设置中的任何内容?
控制器动作在它们的身体中有类似View()......我如何在那里传递ViewModel?我需要吗?
总而言之,我只想了解一个如何实现上述方案的简单示例。
我是MVC的新手,并试图确保我的代码组织良好。
答案 0 :(得分:-1)
我记得Mike Cohn关于敏捷的非常好的话,“最佳实践不存在”
因此,您应该始终不断改进和重构您的代码,还要考虑您的设计,架构,方法等,并且要做到这一点您将需要以下内容:
我知道它有点长的介绍,但有必要了解我为什么我会建议你按照以下方式做我的方法
我在MVC项目中的默认方法如下
但正如我告诉你的那样,最佳实践并不存在所以我将使用BDD和TDD开始我的开发,并实现这个我的创始人并创建一个框架“DevMagicFake”发布在CodePlex上,这个框架将使我能够完成并完成我的视图并使其真正有效,而无需任何设计或代码用于下划线层
在该功能正在处理涵盖其大部分行为的所有单元测试之后,我将开始重构整个
对于每个重构,我运行所有需要的单元测试,以查找我的重构是否破坏了我的代码或破坏了应用程序的已接受和已知行为,如果它发生,我将修复任何中断
因此,例如,为了保存客户并检索它,我将在每个操作方法中仅使用一行代码,如下所示
public ActionResult List(CustomerVeiwModel customerVeiwModel)
{
var repository = new FakeRepository<CustomerVeiwModel >();
repository.Save(customerVeiwModel);
要检索客户,我只需要编写以下代码:
var repository = new FakeRepository<CustomerVeiwModel>();
var customer = repository.GetById(1);
所以我总是在2点之后做出ViewModel,Repository,Architecture等的决定
这将让我意识到如何处理设计,开发架构并让我相信我的代码真正以高质量和客户期望的方式工作
最后,只有一个词,我总是保持重构和重构,每一个新功能,修改,问题或问题都发生在我身上,它可能会导致新的架构概念或设计决策,这将改变整个应用程序和我我总是为他们做好准备。
顺便说一下,你可以在CodePlex上下载使用我的方法形式DevMagicFake的MVC3项目,你会发现名为“ TryFakeMVC3 ”的项目