如何在这种情况下扩展asp.net应用程序

时间:2011-03-02 12:46:27

标签: javascript asp.net

我有asp.net web应用程序。我正在创建用户作为特定公司的注册。在该公司,现在有3种类型的用户。作为管理员,经销商,经理。所以根据这个我正在改变UI页面。

表示当Admin(管理员是默认条目)时,创建让我们说Dealer,那么除了常规信息字段(如姓名,联系方式和所有内容)之外,还有不同的UI。并且在创建管理器时,除了常规信息字段之外,还有不同的UI字段。

要重复使用这种方式的页面,当选择管理器然后关联他的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,虽然添加了新的用户类型。

1 个答案:

答案 0 :(得分:2)

您可以维护字段< - >数据库中的用户类型关系,并在页面的PageLoad中动态添加标签和文本框。

然后,当出现新类型的用户时,您只需要添加到您的数据中。 您的用户类型也应该在数据库中。

当然,让用户创建其他用户的代码也必须足够灵活。所以你需要一个CanCreate表来决定谁可以创建什么类型的用户。 :)

编辑扩展了如何构建内容

实际上,我喜欢你将html元素存储在数据库中的想法。这样就可以使用反射来动态获取属性值。但是,我认为你不能使用数据绑定等等。

所以我会这样做:

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

制作类似

的表格
  • 用户类型
  • 的PropertyName
  • PropertyLabelName
  • FieldLabelType(int)
  • FieldContentType(int)

然后在页面加载中,您获得UserType,从表中提取数据,找到要放置数据的div,然后添加控件,如:

(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);

当然,你需要做一些定位才能让它看起来很漂亮。也许在表格中或者代码中的某些东西?