2011-03-02 98 views
0

我有asp.net的web應用程序。我在創建用戶作爲特定公司的註冊。在這家公司有3種類型的用戶。作爲管理員,經銷商,經理。所以根據這個我正在改變UI頁面。如何在這種情況下擴展asp.net應用程序

意思當管理員(管理員是默認條目)去創建讓說經銷商,然後有除一般信息字段(如名稱,聯繫方式和所有)以外的不同用戶界面。在創建管理器時,除了常規信息字段外,還有不同的UI字段。

要重複使用這種方式的頁面,當選擇管理器,然後關聯他的用戶界面字段只能看到,經銷商也是如此。顯然有一個從我選擇用戶類型的下拉控件。

但是,如果稍後再增加一個用戶類型,我需要根據新用戶類型生成功能。如果我不想更改現有的代碼,我該如何處理。感覺是我怎麼寫通用代碼,以便我不需要在代碼後面或在javascript中再次更改。

因爲所有這些事情現在正在計劃和實施中。但在開始行動之前,我必須清除這件事。我打算更改JavaScript作爲常規方式UI結構,我指

if selected User Type is "Dealer then make visible these div's ELSE If User Type is Manager then make visible these divs

我想寫通用javacript,雖然新的用戶類型得到補充。

+0

請在這裏回覆我,我懷疑你們是否收到我的問題,或者這是沒有答案的東西 – 2011-03-02 13:06:41

+0

您是否使用ASP.NET Membership/Role Provider? – 2011-03-02 14:43:53

+0

不,我沒有使用asp.net成員/角色提供者。我開發了自己的模塊。會影響到什麼嗎? – 2011-03-03 10:13:51

回答

2

您可以在數據庫中維護字段< - >用戶類型關係,並在頁面的PageLoad中動態添加標籤和文本框。

然後,當一種新型用戶出現時,您只需添加到您的數據。 你的用戶類型也應該在數據庫中。

當然,讓用戶創建其他用戶的代碼也必須足夠靈活。所以你需要一個CanCreate表格來決定誰可以創建什麼類型的用戶。 :)

編輯擴展如何建立你的內容

其實,我喜歡你的有關存儲在數據庫中的HTML元素的想法。這將節省您使用反射來動態獲取屬性值。但是,我不認爲你可以使用數據綁定等等。

所以不是我會做這樣的事情:

public enum ControlType 
{ 
    Label, 
    TextBox, 
    ... 
} 

做一個表像

  • 用戶類型
  • 屬性名
  • PropertyLabelName
  • FieldLabelType(INT)
  • FieldContent

    (pseudocode) 
    
    Control label = null; 
    switch (FieldLabelType) 
    { 
        case ControlType.Label: 
         var label = new Label() 
         { 
          .. all kinds of properties 
          Text = PropertyLabelName 
         }; 
         control = label; 
         break; 
        case ??? 
         ... 
    } 
    if (label != null) 
        fielddiv.Add(label); 
    
    Control field = null; 
    switch (FieldContentType) 
    { 
        case ControlType.TextBox: 
         var textbox = new TextBox() 
         { 
          .. all kinds of properties 
          Text = new Binding(... Path = PropertyName) 
         }; 
         control = textbox; 
         break; 
        case ??? 
    } 
    if (field != null) 
        fielddiv.Add(field); 
    

    中:在頁面加載你的用戶類型,從表中提取數據,發現在div要放置數據,然後添加控件樣型(INT)

然後當然,你需要做一些定位才能讓它看起來很漂亮。也許在桌子上或代碼中查找什麼?

+0

是的,但有些地方我需要檢查哪些用戶類型的UI控件。所以實際上我需要手動檢查,如果用戶類型==「經銷商」{makeVisibleDealerDiv();}否則如果用戶類型==「經理」{makeVisibleManagerDiv()}其他{MakeVisibleNormalDiv()} ...就像那樣。我想要的問題不想用特定的UserType硬編碼進行檢查。這應該以通用的方式發生。這是通過的嗎? – 2011-03-03 10:19:31

+0

我的回答暗示了這一點。請再仔細閱讀。 – 2011-03-03 11:29:38

+0

謝謝...是的,我已經維護了數據庫中的用戶類型,就像你說的那樣。但正如你所說,我需要添加動態填充標籤和文本框。但在哪個基礎上。我需要檢查某處,對嗎?作爲我的評論。那麼你的意思是說我需要維護數據庫中的HTML字符串格式的UI項目?可能你是對的,但我無法得到你的答案。請清除我。引導我 – 2011-03-03 11:39:35

相關問題