2011-06-07 57 views
0

我目前正在重新設計一個軟件從一個aspx應用程序,支持的WinForms,以及,通過這樣做,我實現了MVP模式,以更容易處理的進一步發展,並使其更容易MVP模式維護同一應用程序的兩個版本。實現在一個多ASPX網站

但這是我第一次實施這種模式,所以有幾個問題表現出來。

  1. 由於此應用程序有幾個頁面/窗體,我應該每個視圖有一個演示者(一個視圖=一個aspx文件)嗎?我猜是肯定的更容易維護和保持IView接口tidyer。

  2. 什麼是'標準'的細節我應該寫在IView?即。爲了測試這一點,我寫了RegisterUser.aspx視圖,並且我想在某些時候禁用一些控件,如果我有一個通用的'void DisableControl(string name); void EnableControl(string name); ''或更專門的'void DisablePasswordControl(); void EnablePasswordControl();'?

我可以看到利弊兩種方法,所以我想我至少應該問之前,我做任何壞習慣這裏。

回答

0

對於第1點,它應該是每個視圖1個演示者,除非您擁有使用相同視圖的非常類似的演示者。

對於第2點,你應該有這個剛剛要麼無效DisableControl(字符串名稱),雖然這是不是太必要的,因爲它可以將所有的頁面您aspx.cs部分內處理。這取決於你隱藏控制的內容和時間。

祝你好運!

+0

所以我可以有視圖處理應該怎樣因此,有觀點渲染控制開啓/關閉不打破格局?那麼就更好了,我:) – Thomas 2011-06-07 09:26:15

+0

我真的不喜歡'DisableControl',就很難創建用於測試嘲笑。在主持人的視圖中也發送一個控件的ID,並不好。 – Magnus 2011-06-07 09:34:57

+0

它不會打破這種模式,MVP是確定的,只要大部分的邏輯去演示者,但後來什麼,這將顯示將進入你的頁面或用戶控制。 作爲馬格努斯說,DisableControl恐怕很難嘲笑而不是非常必要的。 – 2011-06-07 09:39:40

1

1個是

2我會像這樣的屬性去:

public class RegisterUser : IRegisterUserView 
{ 
    bool IRegisterUserView.PasswordEnabled 
    { 
    get { return tbPassword.Visible ; } 
    set { tbPassword.Visible = value; } 
    } 
}