控制器中应该有什么类型的逻辑? (MVC和存储库模式)

时间:2013-03-06 18:37:36

标签: asp.net-mvc model-view-controller

我听到很多意见,但是关于控制器中应该使用什么类型的逻辑,是否存在一般规则?

我使用存储库进行数据访问和更新,但是如果在控制器中更新它的操作方法中接受模型参数(例如,FormCollection对象等),然后将其传递到存储库进行更新,那么该怎么做。

有没有明确的禁忌?

由于

1 个答案:

答案 0 :(得分:3)

我通常以允许模型和视图之间分离的方式设计Controller,以便它们可以忽略彼此的存在。

问题是定义模型的职责是什么,以及Controller对 borderline 这些问题的责任是什么。没有人会认为将实体持久存储到数据库是控制器的任务,但是如果我们谈论验证,那么事情会引起更多争议。

对于输入验证,我个人的方法是在Controller端执行它,假设/约束实体在传递给模型时已经有效。一些MVC框架(即Struts)鼓励这种趋势,这些框架在控制器端提供开箱即用的验证,但是,例如,当您必须在不同的上下文中重新部署模型时,可能会出现这种情况(例如,一个Web服务),您的验证规则在前一个控制器中连接。

我鼓励你的研究,但是从个人经验中得到一些小建议:避免过多考虑它。这种问题因宗教战争和不同方法的倡导者毫无意义的固执而臃肿。在现实世界中,最后,所有这些设计问题都被严峻的事实所搞砸,你只需要在15分钟内做一些工作,就像副总裁在午餐时间之前想要的那样。