我们有一个用C#开发的asp.net Web表单。这个表单有大约100个字段,它是非常动态的形式。从某种意义上说,它是动态的,当你第一次开始时,你只看到大约20个字段,但是当你继续在表格中进行不同的选择时,会显示或隐藏包含字段的面板。几乎每个字段都在客户端使用.net验证器进行验证。 Javascript用于打开/关闭验证器,具体取决于它们所在的面板是否可见。
这个表格有一些错误,后面很难调试这个表单,因为almos每个字段至少有2个验证器 - require和/ regular experssion。选择时,某些字段也会执行自动后备。大多数情况下,用户无法提交表单,因为仍然启用了一个/多个验证程序,但是它们所附加的字段是不可见的,因此很难调试哪个验证程序导致问题。
所以这是我的设计问题。
我在想如果我创建一个单独的JavaScript函数,每次单击或更改表单字段时调用该函数,将调用此JavaScript函数并检查所有100个表单字段。如果表单字段可见,则启用相应的验证器,否则禁用。
您如何看待这种方法?
提前感谢您的时间和建议。
答案 0 :(得分:0)
从可用性的角度来看,我强烈建议尽可能缩短表单,并在表单页面中填写表单列表。用户需要偶尔暂停,并在中途保存工作。
有理由不对表单进行细分(例如,来自匿名用户的调查)。但是如果用户经过身份验证并被迫填写表格(根据法律或其他现实世界的限制),那么你应该有5种形式的20个字段左右。
一旦复杂性降低,您就可以更轻松地解决其他问题。
对于你的问题:
我建议使用ASP.NET验证器。他们被拒绝进入两个世界:可用性(反应性)的客户端和安全性的服务器端。如果没有ASP.NET验证器,您将很难获得相同的易用性和一致性。
正则表达式不应该在验证器中调试,而是在一个单独的时刻(单元测试或带有大量测试字符串的简单脚本)调试,然后在几乎没有测试的情况下插入。
关于autopostback:为什么?尽量避免使用它或使用AJAX。
你需要做很多工作,遵循这些建议,但要确信它们是值得的。特别是对于新项目。