asp.net夜话之九:验证控件(一)
td> 参加人数</td><td> <asp:TextBox ID="txtNumber" runat="server"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtNumber" ErrorMessage="必须填写人数"></asp:RequiredFieldValidator> <asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txtNumber" ErrorMessage="人数必须大于0" Operator="GreaterThan" Type="Integer" ValueToCompare="0"></asp:CompareValidator></td></tr> <tr><td> 经费预算</td><td> <asp:TextBox ID="txtMoney" runat="server"></asp:TextBox> <asp:CompareValidator ID="CompareValidator3" runat="server" ControlToValidate="txtMoney" ErrorMessage="经费必须是大于0的数字" Type="Currency" ValueToCompare="0" Operator="GreaterThan"></asp:CompareValidator></td></tr> <tr><td> <asp:Button ID="Button2" runat="server" Text="提交" /> </td><td> <input id="Reset3" type="reset" value="重置" /></td></tr> </table> </div> </form> </body> </html> 下面不填写任何信息提交表单的效果: 从上图我们可以得出一个结论:因为经费预算只使用了CompareValidator控件,所以如果用户不填写任何信息是能够通过验证的。 现在我们填写表单,这里故意将结束时间设置得比开始时间早,并且在参加人数中填写了一个“q”,下面是提交表单的效果: 从上面的效果我们可以得出下面的结论: (1)如果填写数据不能按照期望的数据类型进行转换时是不能通过验证的,因为我们期望用户在参加人数一栏填写大于0的数字,用户填写了英文字母所以不能通过验证。同理,如果用户在经费预算一栏中填写了不能转换成货币的数字(即小数点后最多两位数字的浮点数)、在开始时间或者结束时间填写了不能转换成日期的数据都是不能通过验证的。 (2)验证控件的Display属性默认为Static,在这种情况下即使所验证的控件通过了验证,但是页面仍然为其分配了显示控件,比如用于验证开始时间、结束时间和参加人数的RequiredFieldValidator控件,虽然满足了必须填写的要求,可是因为它们的属性都是static的,所以当不能通过CompareValidator控件的验证时,CompareValidator控件的错误提示信息仍然与文本框保持了一段距离。 现在我们把页面上所有验证的Display的属性设置为Dynamic,也就是仅在必要的时候页面才为其分配显示空间,因为Display属性是所有验证控件所共有的属性,所以我们可以按住Ctrl键的同时用鼠标选取所有的验证控件,然后集中设置所有控件的Display属性,如下图: 我们重新运行页面,填写和上次一样的信息,然后提交表单,这次的错误提示信息与文本框之间的距离就没有刚才那么明显了,效果如下: 这是如果我们将开始时间和结束时间的值互换,并且在参加人数一栏填写大于0的整数时就能提交表单到服务器进行处理 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |