2009-07-16 34 views
1

我正在使用.NET 3.5構建Windows窗體應用程序。我想使用MVC設計模式。該應用程序有兩種形式:快速啓動和顯示細節的視圖。快速啓動只是有2層一棵樹,讓樹結構看起來像Windows Form MVC

  • 1類
    • 子目錄1-1
    • 子目錄1-2
  • 類別2
    • 子類別2-1 等

當用戶點擊類別或子類別時,詳細信息視圖顯示屬於該類別或子類別的所有項目。一個項目可以只屬於一個類別或子類別(我的應用程序中的項目實際上是文檔,如訂單,發票等)。類別的項目和子類別的項目具有幾乎相同的屬性,但仍然有點差異。

我有一個處理的快速啓動提出的click事件的控制器類。控制器確定用戶是否點擊類別和子類別,然後獲取屬於該類別或子類別的所有項目。然後它將所有項目發送到詳細信息視圖以顯示它們。

我的問題是它更好地使用一個一般化的細節視圖或者爲每個類別和子類別的看法?如果我要使用一個廣義視圖,則需要根據項目是屬於某個類別還是子類別來顯示/隱藏一些字段,如果類別的項目結構和子類別的項目結構變得更加不同,可能會使其難以維護未來。

如果我要爲每個類別和子類別的視圖,控制器需要加入的類別視圖和當用戶點擊一個類別節點上取出的子類別圖。這是我的錯誤,因爲當用戶點擊一個節點時,控制器需要從主窗體添加/刪除視圖,這對我來說看起來不是一個好設計。

因此,這兩者都不是好設計。這個問題的正確解決方案是什麼?

編輯: 哪一部分是太含糊。基本上,用戶可以看到兩種類型的項目:CategoryItem和SubCategoryItem。 SubCategoryItem是CategoryItem的子類。在MVC模式中,我需要2個視圖(調用CategoryView和SubCategoryView),並且控制器確定要呈現給用戶的視圖?或者只是一個視圖,所以控制器總是呈現這個視圖,並且它是視圖的工作,以確定是否顯示CategoryView或SubCategoryItem?

+0

我的手指在觸發器上標記此問題-1,因爲描述過於模糊。 – djangofan 2009-07-16 20:34:52

回答

1

不知道你的代碼的細節很多,似乎對我來說,這個問題是不是你的控制器,但你的觀點。

這聽起來像你的看法是子類的主要候選人。控制器聽起來像知道遠遠太多關於不同類型的意見。 (然後,這可能就是你想要的方式。)但是如果你有兩個不同的視圖,除了一些特定的方面外,它們在設計上非常相似,聽起來他們應該共享一個共同的基類,子類。控制器應該調用一個通用的方法並告訴他們通過該方法調用來區分他們自己,並向他們傳遞他們需要的任何信息。

這只是一個瘋狂的猜測,基於我可以從您的帖子中收集到的少量信息。

+0

是的,我認爲你得到了我所要求的。請參閱我的編輯。所以控制器不應該知道存在CategoryView和SubCategoryView? 「控制器應該調用一個通用方法...」 - 這個常用方法屬於哪裏?控制器或視圖?好像我需要控制器和視圖之間的另一個層。 感謝您的幫助 – David 2009-07-17 13:50:03