快速业务通道

ASP.NET 2.0数据操作教程之十九:给编辑和新增界面增加验证控件

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
xtBox的ID改名为 EditProductName

接下来,设置 RequiredFieldValidator的ControlToValidate属性为EditProductName。最后, 设置ErrorMessage属性为“You must provide the product’s name” 并将Text属性设置为“*”。如果设置了Text属性,那么 当验证失败的时候文本值就会被显示出来。ErrorMessage属性也是必须的,它是 为ValidationSummary准备的;当Text属性值被省略时,ErrorMessage属性也会在 无效输入时作为文本显示出来。

设置完RequiredFieldValidator的这些属 性后,屏幕应该如图7所示:

ASP.NET 2.0数据操作教程之十九:给编辑和新增界面增加验证控件

图7:设置RequiredFieldValidator控件的 ControlToValidate, ErrorMessage和Text 属性

为ProductName的EditItemTemplate增加完 RequiredFieldValidator,余下的就是为UnitPrice的EditItemplate模板增加一 些必要的验证控件。由于我们决定UnitPrice编辑时作为选填,所以并不需要 RequiredFieldValidator。不过需要增加一个CompareValidator来确保UnitPrice 有效,必须大于等于0并且时货币格式。

在为UnitPrice 的 EditItemTemplate模板增加CompareValidator之前,先将TextBox的ID改为 EditUnitPrice。然后添加CompareValidator控件并设置 ControlToValidate属性 为EditUnitPrice,ErrorMessage属性为“The price must be greater than or equal to zero and cannot include the currency symbol”, Text 属性为 “*”。

为了确保UnitPrice值必须大于等于0, 设置CompareValidator的Operator属性为GreaterThanEqual,ValueToCompare属 性为 “0”, 并且Type属性为Currency。下面的代码显示了 UnitPrice 模板列中的 EditItemTemplate调整后的样子:

<EditItemTemplate>
<asp:TextBox ID="EditUnitPrice" runat="server" Text=''<%# Bind("UnitPrice", "{0:c}") %>''
Columns="6"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToValidate="EditUnitPrice"
ErrorMessage="The price must be greater than or equal to zero and cannot include the currency symbol"
Operator="GreaterThanEqual" Type="Currency" ValueToCompare="0">*</asp:CompareValidator>
</EditItemTemplate>

这些调整之后,在浏览器里查看这个页 面。如果对product编辑时你尝试省略name或者输入一个无效的price,星号就会 显示在文本框后面。如图8显示,包含了货币符合的price,如$19.95,将被视作 无效。CompareValidator控件的Currency类型允许数字分割符(像逗号,小数点 ,取决于culture设置),以正负号开头,但是不允许货币符号。而编辑界面 UnitPrice却呈现为货币形式,这种行为可能令用户很困惑。

注意:回想 一下《Events Associated with Inserting, Updating, and Deleting 》教程, 我们设置了绑定列的DataFormatString属性为{0:c},使其格式化为货币。由于我 们将ApplyFormatInEditMode属性置为true,导致 GridView编辑界面将UnitPrice 格式化为货币格式。当绑定列转换为模板列会保留这些设置并且对TextBox的Text 属性使用绑定语法<%# Bind("UnitPrice", "{0:c}") %>进行格式化。

ASP.NET 2.0数据操作教程之十九:给编辑和新增界面增加验证控件

图8:无效输入时文本框后面显示的星号

基于如此的验证方式 ,在编辑记录时用户必须手动删除货币符号,很难让人接受。下面有三种选择进 行补救:

1. 配置EditItemTemplate使 UnitPrice不会被格式化为货币。

2. 移除CompareValidator并替换为RegularExpressi

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号