2010-08-24 69 views
3

我正在尋找一些建議來處理用戶界面,特別是網絡用戶界面,其中多種不同的設置和切換會改變顯示給用戶的內容。設置與用戶綁定,因此每個用戶都有獨特的體驗(取決於各種因素)。現有的使用大量條件語句的方法;顯然不會縮放並且導致維護噩夢。什麼是在UI中處理大量排列的好方法?

我將實現MVC模式來區分顧慮,但我必須想象有一種設計模式或配置高動態視圖的最佳實踐。

基於用戶憑據,我有:

  • 功能,可以打開和關閉
  • 特點進行切換可以擴展增強
    • 認爲一個複選框列表中的位置一個複選框對一個組是不可見的,整個列表可能對其他組不可用。 (就像選項列表,用戶不能訪問到所有這些,也許有些是禁用,也許有些是看不見的。)

的問題是:我怎麼保持視圖儘可能地乾淨,同時保持觀點的背景和意圖?我是否創建單獨的「處理程序」來輸出特定的HTML(如果它們通過授權提供者鏈接在一起)?如果是這樣,我如何使用多個組共享的功能,但可能會將略微變爲

我不知道它關係到我在開發什麼平臺,因此任何特定語言或框架中的示例或建議都可以。

編輯
例如,說我有ProductViewModel(在C#):

public class ProductViewModel { 
    public bool DisplayPrice { get; set; } 
} 

在我看來的話,我可以檢查是否Model.DisplayPrice == true,如果是這樣,顯示產品的價格。在這個級別,我不在乎爲什麼它正在顯示。所以,這將取代像if (UserInRole("Vendor") || UserInRole("Distributor"))

很明顯,我需要一些方法來改變基於上下文的設置。理想情況下,我想避免使用條件語句if (UserInRole("Vendor") || UserInRole("Distributor")),因爲條件列表可以快速增長。例如,假設我想向供應商顯示價格,但只有當他們有VIP訪問權限,並且已經超過30天的用戶,並且已經進行了以前的購買,並且...

任何最佳實踐或建議,用於在運行時修改/堆棧設置,每個用戶?有大量排列組合實現「偏好」的經驗的人?

+0

也許我正在剋制這一點。 – 2010-08-24 20:56:46

回答

1

可能有一些不同的東西會在這裏......

當你談論一個複選框列表有條件地顯示給用戶,這讓我想到的ACL。您將篩選複選框的列表,以便在他們進入視圖之前進行顯示。該視圖將簡單地循環顯示並顯示它們的複選框列表。

對於可以打開和關閉的功能,我認爲這取決於功能如何呈現給用戶。例如,如果它是一個按鈕,我會創建一個方法來獲取所需的角色或權限,並根據用戶是否具有該角色或權限來顯示其自身。所以你仍然有相同數量的條件,但是它們被封裝在一個可以在視圖間重用的方法中。它肯定會更乾淨,但我認爲它是有點多毛,至於這是否是一個建議的做法或不...

相關問題