这是对MVC的正确解释吗?

时间:2009-10-02 17:40:28

标签: .net model-view-controller design-patterns

假设您有一个客户对象和操作该对象的“客户文件”表单。以下是对MVC的正确解释吗?

Customer - Model
CustomerForm.cs - Controller
CustomerForm.desinger.cs - View

尽管CustomerForm.cs和CustomerForm.designer.cs是同一个类的部分内容,但我对MVC的了解似乎有意义,

1)视图和控制器通常(如果不总是)紧密耦合

2)视图设置所有内容的外观(即用户控件属性)

3)UI行为在控制器中完成(通过事件处理程序和任何手动数据绑定显示)

4)域逻辑应存在于模型中(我假设Customer.cs实现了IDataErrorInfo,INotifyPropertyChanged等内容。)

我问,因为我看到一两个断开连接:当通过设计器使用数据绑定时,我希望在CustomerForm.cs中发生类似的事情,并监听/响应INotifyPropertChanged事件。但一般来说,这是准确的吗?

2 个答案:

答案 0 :(得分:1)

是的,你有它的要点。视图和控制器不一定是强耦合的,因为您可以拥有由多个不同控制器呈现的视图,反之亦然以及部分视图。 MVC不会在webforms意义上进行数据绑定,因此最好让对象自己获取所需的数据,或者使用ORM,如nHibernate和存储库设计模式。

答案 1 :(得分:0)

MVC就是关注点分离(SoC)。通常,您将域模型作为模型(示例中为Customer类)。然后你会有你的控制器。您的控制器将模型连接到视图。例如,您可以调用数据访问层来获取信息并将其发送到视图。该视图只是一个HTML页面,它获取从控制器发送的信息并将其呈现。

示例:

Customer.cs将具有Name,Address,Company等属性.CustomerController.cs将有一个像List这样的方法将模型连接到视图。通常,您将拥有一个使用存储库模式的单独数据访问层(使用NHibernate或Subsonic之类的东西)。 List.aspx将包含显示传递给它的信息的HTML。然后,您可以致电http://domain.com/Customer/List查看客户列表。