我有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,虽然添加了新的用户类型。
答案 0 :(得分:2)
您可以维护字段< - >数据库中的用户类型关系,并在页面的PageLoad中动态添加标签和文本框。
然后,当出现新类型的用户时,您只需要添加到您的数据中。 您的用户类型也应该在数据库中。
当然,让用户创建其他用户的代码也必须足够灵活。所以你需要一个CanCreate表来决定谁可以创建什么类型的用户。 :)
编辑扩展了如何构建内容
实际上,我喜欢你将html元素存储在数据库中的想法。这样就可以使用反射来动态获取属性值。但是,我认为你不能使用数据绑定等等。
所以我会这样做:
public enum ControlType
{
Label,
TextBox,
...
}
制作类似
的表格然后在页面加载中,您获得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);
当然,你需要做一些定位才能让它看起来很漂亮。也许在表格中或者代码中的某些东西?