我有 ASP.NET Web 应用程序。我正在其中创建用户作为特定公司的注册。到目前为止,该公司有 3 种类型的用户。作为管理员、经销商、经理。所以根据这个我正在更改 UI 页面。
意味着当管理员(管理员是默认条目)创建经销商时,除了常规信息字段(如姓名、联系方式等)之外,还有不同的 UI。创建管理器时,除了常规信息字段之外,还有不同的 UI 字段。
为了重用我正在使用的页面,当选择经理时,相关的 UI 字段将仅可见,对于经销商而言也是如此。显然有一个下拉控件,我可以在其中选择用户类型。
但是,后来如果公司添加了一种用户类型,我需要根据新用户类型生成功能。如果我不想更改现有代码,我该如何处理。意义是我如何编写通用代码,这样我就不需要再次更改后面的代码或 JavaScript 中的代码。
目前所有这些事情都在计划和实现中。但在开始之前我必须先弄清楚这件事。我计划像往常一样改变 javascript 中的 UI 结构,我的意思是
如果选定的用户类型是“经销商,则使这些 div 可见”,否则如果用户类型是“经理”,则使这些 div 可见
我想编写通用的 javacript ,尽管添加了新的用户类型。
最佳答案
您可以在数据库中维护字段<->用户类型关系,并在页面的PageLoad中动态添加标签和文本框。
然后,当出现新类型的用户时,您只需添加数据即可。 您的用户类型也应该在数据库中。
当然,允许您的用户创建其他用户的代码也必须足够灵活。因此,您需要一个 CanCreate 表来规定谁可以创建什么类型的用户。 :)
编辑扩展了如何构建内容
实际上,我喜欢你关于将 html 元素存储在数据库中的想法。这将节省您使用反射来动态获取属性值的麻烦。但是,我认为您无法使用数据绑定(bind)等。
所以我会做这样的事情:
public enum ControlType
{
Label,
TextBox,
...
}
制作一个类似的表格
- 用户类型
- 属性名称
- 属性标签名称
- FieldLabelType(整数)
- FieldContentType(整数)
然后在页面加载时,您获取 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);
当然,您需要进行一些定位才能使其看起来很漂亮。也许插入表格或代码中的东西?
关于javascript - 在这种情况下如何扩展asp.net应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5167665/