2009-07-18 156 views
2

我来自世界的WPF方面,我习惯使用MVVM模式相当多。我试图学习MVC,并试图了解我的边界在MVC中的位置有点困难。这是我的场景:ASP.NET MVC的最佳实践

我有3个对象,Parent,Child和GrandChild。这些是自定义对象,不使用MVC内置的模型内容。我对验证的东西有很好的把握。我对如何获取和填充我的对象有很好的把握。但是,我正在努力寻找关于如何处理控制器的最佳实践。我的控制者应该负责什么?例如,我是否应该有一位掌握了如何对CRUD Parent,Child和GrandChild进行控制的控制器?还是应该分开?如果他们应该分开,我应该怎么做,如果当我在看父母时,我想看到一张儿童名单。

回答

3

控制器仅用于控制请求 - 响应的流程。所以,在你的例子中,控制器永远不会知道如何删除它们。 CRUD逻辑应该包装在模型的Repository类中。

看看官方的书呆子晚宴的例子,我个人最喜欢这个part

+0

我不得不道歉,因为我缺乏清晰度,但我的意思是我的模型正在做CRUD,而控制器正在与我的模型交谈。对困惑感到抱歉。 – poindexter12 2009-07-18 02:48:52

+0

这取决于你的商业模式有多复杂。对于简单的应用程序,控制器可以指示存储库类为CRUD。正如您从书呆子晚餐中所看到的那样,即使对输入逻辑进行验证也可以更好地在控制器之外实现。我认为对于更复杂的业务模型,控制器可能会更好地处理将数据“传递”给业务层类。 – xandy 2009-07-18 06:56:43

0

书呆子晚餐应用程序是一个干净的例子。我同意将CRUD推送到存储库,并且一般情况下,仅将控制器用于控制流。但是,根据我对ASP.NET MVC的经验(对或错),控制器在切换到视图之前做了大量重新排列的数据,反之亦然,当接受对象模型作为数据时一个表格帖子。但是,它只是在视图需要和模型需要的内容之间进行翻译。