【问题标题】:ASP.Net: Best Way To Handle Multi-Function Form Based on UserASP.Net:基于用户处理多功能表单的最佳方式
【发布时间】:2011-07-27 05:32:45
【问题描述】:

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

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

硬编码 - 显然很难维护

自定义数据库规则框架 - 这似乎可行;但是,根据逻辑的复杂程度,维护起来会有些痛苦

Windows Workflow Foundation - 这将能够处理几乎任何类型的逻辑,并且维护得很好,但我不确定这将如何提高性能。 (可以外部存储在数据库中)

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

这就是我在这一点上想出的全部内容,但我希望有人找到一个优雅的解决方案来处理这种复杂形式的场景。

谢谢!

【问题讨论】:

    标签: c# asp.net .net-4.0


    【解决方案1】:

    我从未与 WWF 合作过,但我遇到过这样的场景,并为它实现了一个输入表单,该表单运行良好,并且在您了解系统后易于维护。

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

    我最终创建了一个自定义数据库规则框架,正如您所说的那样。设置配置表单以将用户组与某些代码和功能片段相关联是一项额外的工作,但最终一切都自动配置自身是非常值得的。同样在我的情况下,我能够将用户和代码设置工作外包给使用该应用程序的部门的主管,所以这是一个很大的优势。

    【讨论】:

      【解决方案2】:

      硬编码——维护起来并不难,这取决于规则的流畅程度。即,如果您的“状态”相对固定,您不会添加新状态或更改这些状态​​与页面交互的方式,那么硬编码可能会很好。在这种情况下,我唯一的建议是将其保存在单独的类中,以便您可以重复使用它、更轻松地修改和重新发布等。

      如果您希望灵活地大量更改规则,创建新状态(我将这些视为“角色”),然后将信息存储在数据库中会更有意义。

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

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

      【讨论】:

      • 我实际上是指用户所在区域的状态,但角色也可以工作。我只是想想一种具体的方法来区分场景中的用户
      猜你喜欢
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多