2009-10-02 80 views
1

假設您有一個客戶對象和操縱該對象的「客戶文件」窗體。以下是對MVC的正確解讀嗎?這是MVC的正確解釋嗎?

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

即使CustomerForm.cs和CustomerForm.designer.cs是同一類的諧音,這似乎是有道理的,從我瞭解MVC,那

1)的視圖和控制器常,即使不總是,緊耦合

2)視圖所有設置如何「看起來」(即用戶控件屬性)

3)的用戶界面行爲在控制器完成(通過事件處理程序和任何手動所示數據綁定)

4)的域邏輯應在模型中存在(我假定Customer.cs實現之類的東西IDataErrorInfo的,INotifyPropertyChanged的等)

請問因爲我看到一個或兩個斷開:當通過使用數據綁定設計師,我希望在CustomerForm.cs中發生這樣的事情,並且還要監聽/響應INotifyPropertChanged事件。但一般來說,這是否準確?

回答

1

是的,你有它的要義。視圖和控制器不一定強烈耦合,因爲您可以擁有由幾個不同的控制器呈現的視圖,反之亦然,也可以是部分視圖。 MVC並沒有在webforms的意義上進行數據綁定,所以最好讓你的對象自己獲取它所需要的數據,或者使用像nHibernate這樣的ORM與存儲庫設計模式。

+0

好酷。在我的情況下,模型/域對象是ORM對象 –

0

MVC完全是關於問題的分離(SoC)。通常,您將域模型作爲模型(在您的示例中爲Customer類)。你會有你的控制器。您的控制器將模型連接到視圖。例如,您可以調用您的數據訪問層來獲取信息並將其發送到視圖。該視圖只是一個HTML頁面,它接收從控制器發送並呈現的信息。

實施例:

Customer.cs將有像姓名,地址,公司等性質CustomerController.cs將有像列表的方法,該模型連接到視圖。通常情況下,你會有一個單獨的數據訪問層(使用NHibernate或Subsonic的東西)使用存儲庫模式。 List.aspx將具有顯示傳遞給它的信息的HTML。然後您可以撥打http://domain.com/Customer/List查看客戶列表。