ASP.Net:处理基于用户的多功能表单的最佳方式

本文关键字:多功能 表单 方式 最佳 用户 Net 处理 于用户 ASP | 更新日期: 2023-09-27 18:03:30

在我的场景中,假设有一个ASP。Net 4.0 c#页面,其中包含有几个输入的表单。根据用户所处的状态,表单需要以完全不同的方式进行操作:有些字段可能是必需的,有些字段根本不可见,有些字段可能有不同的要求(状态A可能只允许数字1-5,状态B可能只允许数字5-10),等等。

因此,为了简化事情,假设对于表单上的任何给定输入,我需要根据用户的状态来确定它是否为用户所需要。对于那些经常遇到这种情况的人来说,实现一个系统来处理这种情况的最佳方法是什么?我可以看到以下选项:

硬编码 -难以维护,显然

自定义数据库规则框架 -这似乎会工作;但是,根据逻辑的复杂程度,维护它会有点麻烦

Windows Workflow Foundation -这将能够处理几乎任何类型的逻辑,并且是体面的维护,但我不确定这将如何做性能明智。(可存储在数据库外部)

动态代码 -将逻辑存储在数据库中,并直接根据用户运行。我从来没做过……这可能吗?

这就是我目前所能想到的,但我希望有人能找到一个优雅的解决方案来处理像这样复杂的表单。

谢谢!

ASP.Net:处理基于用户的多功能表单的最佳方式

我从未与世界自然基金会合作过,但我遇到过这样的场景,并为它实现了一个运行良好的报名表格,一旦你了解了系统,就很容易维护。

我不鼓励您使用硬编码逻辑,因为任何程度的复杂性都会很快变得无法维护。我尝试了一种混合的方法,最初包括一些硬编码,结果并不好。

我最终创建了,正如你所说的,一个自定义数据库规则框架。设置配置表单以将用户组与某些代码和功能块关联起来需要做一些额外的工作,但最终,让所有东西都自动配置自己是非常值得的。同样在我的例子中,我能够外包用户&代码设置工作在使用该应用程序的部门的主管,所以这是一个很大的加分项。

硬编码——并不难维护,只取决于规则的流畅性。也就是说,如果你的"状态"是相对固定的,你没有添加新的或者改变这些状态与页面交互的方式,那么硬编码可能是好的。在这种情况下,我唯一的建议是将它保存在一个单独的类中,以便您可以重用它,修改&重新发布更容易,等等。

如果你想灵活地改变规则,创建新的状态(我认为这些是"角色"),那么将信息存储在数据库中会更有意义。

我个人使用数据库方法。这为我节省了一些重新发布应用程序的时间,并且允许我为最终用户构建额外的界面,以便他们在角色分配方面(如您所说的"状态")管理自己的应用程序的能力有限。例如,我的终端用户可以授予他们的一个客户端(基于客户端的登录)对某个报告的访问权。或者在您的情况下,他们可以更改您的.aspx正在使用的某个范围验证器的最小值。

由于这种方法允许我将一些管理功能委托给我的最终用户,它允许他们进行即时更改(在有限的范围内),并且还为我节省了大量的紧急工作/做昨天的工作,就我自己的待办事项列表而言。