在我的场景中,假设有一个ASP.Net 4.0 C#页面,其中包含一个包含多个输入的表单。根据用户所处的状态,表单需要以完全不同的方式操作:某些字段可能是必需的,有些字段根本不可见,有些可能有不同的要求(状态A可能只允许数字1-5,状态B数字5-10)等。
因此,为了简化操作,我们只需说明表单上的任何给定输入,我需要再次根据其状态确定用户是否需要它。对于那些遇到这种情况的人来说,实现系统处理这个问题的最佳方法是什么?我可以看到以下选项:
硬编码 - 难以维护,显然
自定义数据库规则框架 - 这似乎可行;然而,根据逻辑的复杂程度来维持是有点痛苦的
Windows Workflow Foundation - 这将能够处理几乎任何类型的逻辑,并且可以维护,但我不确定这将如何做性能明智。 (可以在外部存储在数据库中)
动态代码 - 将逻辑存储在数据库中并根据用户直接运行。我从来没有这样做过......有可能吗?
这就是我现在提出的所有内容,但我希望有人找到一个优雅的解决方案来处理复杂形式的场景。
谢谢!
答案 0 :(得分:1)
我从未与世界自然基金会合作,但我遇到过这样的情景,并为其实施了一个条目表格,运作良好,一旦你理解了系统就很容易维护。
我会阻止你使用硬编码逻辑,因为任何程度的复杂性很快就无法维持。我尝试了一种混合方法,其中包括最初的一些硬编码,但结果并不好。
我最后创建了一个自定义数据库规则框架。设置配置表单以将用户组与某些代码和功能相关联是一项额外的工作,但最终自动配置自身的一切都是值得的。同样在我的情况下,我能够将用户和代码设置工作给使用该应用程序的部门的主管,这是一个很大的优势。
答案 1 :(得分:1)
硬编码 - 不是很难维护,只是取决于规则的流畅程度。即,如果您的“状态”相对固定,您不会添加新的状态或更改这些状态与页面交互的方式,那么硬编码可能没问题。在这种情况下,我唯一的建议是将它保存在一个单独的类中,以便您可以重复使用它,修改&重新发布更容易,等等。
如果您希望灵活地更改规则,请创建新状态(我将其视为“角色”),然后将信息存储在数据库中会更有意义。
就个人而言,我使用数据库方法。它节省了我对应用程序的一些重新发布,并且它允许我为我的最终用户构建额外的界面,以便在角色分配(如你所说的“状态”)等方面管理他们自己的应用程序的能力有限。例如,我的最终用户可以授予他们的一个客户端(基于客户端的登录名)访问某个报告。或者在您的情况下,他们可以更改.aspx正在使用的范围验证器的最小数量。
由于这种方法允许我将一些管理功能委派给我的最终用户,它允许他们进行即时更改(在有限的范围内),并且还节省了大量的工作/昨天这样做就我自己的待办事项清单工作而言。