今天下午工作时,用户来了一份邮件,说我们开发的系统中某个提交表单的功能界面,在对文本框(TextBox)做必填项校验时,校验提示的错误信息和文本框之间有很大的空白。之后看了代码才知道原来该文本框后面有两个校验控件,当在文本框输入不合法的内容时,刚好满足第二个校验控件,显示了该控件的提示信息。而提示信息和文本框中间的空白,其实是第一个校验控件提示信息的内容,只是目前是隐藏的,但注意了,此时的提示信息内容也占用了页面显示位置,以空白显示在页面上。
过后仔细研究了下验证控件的属性方法,才明白有个属性可以解决以上的问题,就是在第一个验证控件上设置属性Display="dynamic",就解决了以上问题。
Display 属性 获取或设置验证控件的错误消息的显示行为,默认值为Static。
ValidatorDisplay 枚举表示验证控件中错误信息的不同显示行为。
枚举值如下:
None 指定只想在 ValidationSummary 控件中显示错误信息。错误信息不会显示在验证控件中。
Static 指定不希望网页的布局在验证程序控件显示错误信息时改变。显示页面时将在页面上为错误信息分配空间。验证程序的内容是页面的物理组成部分,因此,同一输入控件的多个验证程序必须在页面上占据不同的位置。
Dynamic 指定希望在验证失败时在网页上动态放置错误信息。页面上没有为验证内容分配的空间,因此,页面动态更改以显示错误信息。这使多个验证程序可以在页面上共享同一个物理位置。为了防止在显示错误信息时改变页面布局,包含验证程序的 HTML 元素必须足够大,可以容得下验证程序的最大大小。