假设您有一个客户对象和操作该对象的“客户文件”表单。以下是对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事件。但一般来说,这是准确的吗?
答案 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查看客户列表。