我们有一个应用程序在页面上进行了大量的数学检查,并根据它为用户提供了一个红绿灯(红色、绿色、黄色)。
绿色 = 他可以继续
红色 = 不要让他继续
黄色 = 允许继续但警告
这些公式对页面上的各种文本字段进行操作。因此,例如,如果 textbox1 有“10”而 texbox2 有“30”...公式可能是:
T1 * T2 > 600 ? “绿色”:“红色”
我的问题是:
是否有可能以某种方式集中这些公式?
我为什么需要它?
现在,如果公式有任何变化,我们也必须在服务器端复制变化(违反 DRY,难以维护代码)
一个选择是
- 将(简单)公式存储为配置中带有占位符的文本(?)
- 用 javascript 和服务器端代码中的值替换占位符
- 在 JS 中使用 eval() 进行计算
- 使用技巧概述 here对于 C#
在这种方法中,问题可能是在 JS 和 C# 中对相同数学字符串的不同解释。
我说得有道理还是应该报告这个问题?!! :P
最佳答案
根据您应用程序的要求,仅在服务器上进行所有验证可能是可以接受的。特别是如果您的用户很少,或者他们中的大多数都在相当快的 Intranet 上,您可以“浪费”一些网络调用来避免维护问题。
如果用户希望在每个字段条目(或每隔几个条目,或每隔几秒)之间获得反馈,您可以使用 AJAX 调用请求服务器进行验证,而无需刷新整个页面。
与完全在客户端上进行验证相比,这当然会导致更多的请求,并且如果您的许多用户网络连接不佳,则可能会延迟向他们提供反馈。我的猜测是总带宽使用量大致相同。您在每次验证往返中使用一些,但它们很小。它可能会被您不打算发送给客户的所有验证 JS 所抵消。
主要的好处是维护和 FUD,否则您会保持客户端和服务器验证同步。无需编写验证 javascript 也可以节省时间。
无论如何,可能值得退后一步,问问您的要求是什么。
关于c# - 如何在 C# (web) 中集中维护一个数学公式,以便在需要时进行更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456049/