2011-03-02 101 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

相关问题