• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件

在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件

作者:heker2007 字体:[增加 减小] 来源:互联网 时间:2017-05-11

heker2007通过本文主要向大家介绍了在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

导言

  到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入— 遗漏了product的name或者负的price— 会导致异常。在前面一章里我们学习了如何在DataList的UpdateCommand事件处理中添加异常处理代码,以便在出现异常时捕捉它并显示友好的错误信息。然而理想的编辑界面应该包含验证控件,用来在第一时间里阻止用户输入一些非法数据。

  本章我们将学习在DataList的EditItemTemplate里添加验证控件从而提供一个更安全的编辑界面,这非常容易。本章将使用前面创建的例子,并扩展编辑界面用来添加合适的验证控件。

第一步: 从 处理 BLL和 DAL的异常复制例子

  在处理BLL和DAL的异常里我们创建了一个以两列的方式列出product的name和price的DataList。本章的目标是扩展这个DataList的编辑界面,让它包含验证控件。我们的验证逻辑如下:

product的 name 是必填的
确保输入的price的值是合法的货币类型格式
确保输入的price的值大于等于0

  我们首先需要将ErrorHandling.aspx页的例子复制到UIValidation.aspx里。这其中包括页面的声明代码和后台代码。下面是复制声明代码的步骤:

  在Visual Studio的打开 ErrorHandling.aspx 切换到源视图 复制从 <asp:Content> 到</asp:Content> 标签内的代码, 见图1.

http://files.weikejianghu.com/file_images/article/201605/2016051210524728.png
图 1: 复制<asp:Content> 内的代码

  打开UIValidation.aspx 切换到源视图 ,粘贴代码.

  完成上面的步骤后,打开ErrorHandling.asxp.cs,复制DispalyExcetionDetails方法和三个事件处理(Products_EditCommand,Products_CancelCommand, 和Products_UpdateCommand),注意不要复制声明类和using的代码。将这些代码粘贴到ErrorHandling.asxp.cs里的EditDeleteDataList_UIValidation 类里。完成这些后,浏览一下页面。这两个页面无论是输出还是功能都是一样的(见图2)。

http://files.weikejianghu.com/file_images/article/201605/2016051210524729.png
图 2: UIValidation.aspx 页ErrorHandling.aspx一样

第二步: 为DataList的 EditItemTemplate添加验证控件

  当创建输入表格时,很重要的一点是声明必填字段和用户的输入必须是格式正确的合法值。为了确保用户输入是合法的,ASP.NET提供了5个内置的验证控件,这些验证控件被设计用来验证单个的输入控件里的输入值。

RequiredFieldValidator —确保必填值
CompareValidator — 根据另外的控件的值或常量来验证某个值,或者确保输入值是特定的类型
RangeValidator — 确保输入值在某个范围内
RegularExpressionValidator — 根据正则表达式( regular expression )来验证某个值
CustomValidator — 根据用户自定义的方法来验证某个值

  更多的关于这5个控件的信息请参考给编辑和新增界面增加验证控件  或着ASP.NET Quickstart Tutorials里的Validation Controls section。

  本章里我们需要使用RequiredFieldValidator 来确保用户输入了product的name,CompareValidator 来确保price的值大于等于0并且是合法的货币格式。

  注意:在ASP.NET 1.x里已经包含了这些验证控件了,在ASP.NET 2.0里对它们有很多改进。其中最重要的两点一是对除了IE之外的浏览器的客户端脚本支持,二是同一页面上的验证控件分组。更多的2.0里验证控件新特性的信息请参考Dissecting the Validation Controls in ASP.NET 2.0.

  现在我们来将需要的验证控件添加到DataList的EditItemTemplate里。这个可以通过点击DataList智能标签上的Edit Template,或者直接写声明代码来完成。我们这里使用第一种方法。选择Edit Template后拖一个RequiredFieldValidator 进来,将它放在ProductName TextBox后面。

http://files.weikejianghu.com/file_images/article/201605/2016051210524730.png
图 3: 添加 RequiredFieldValidator

  所有的验证控件都只验证单个的Web控件。因此我们需要指明刚添加的RequiredFieldValidator 是用来验证ProductName TextBox。这个关联是通过将验证控件的ControlToValidate property设为合适的Web控件(在这里是ProductName).然后将ErrorMessage property设为“You must provide the product's name”,Text property设为“*”。如果提供了Text属性的值,它将在验证失败时显示。ErrorMessage 属性是提供给ValidationSummary 控件使用的。如果省略了Text的值,在非法输入时会显示 ErrorMessage 。完成这些后你的页面看起来应该和图4差不多:

http://files.weikejianghu.com/file_images/article/201605/2016051210524731.png
图 4: 设置 RequiredFieldValidator的 ControlToValidate, ErrorMessage, 和Text Properties

  添加完RequiredFieldValidator 后,剩下的事就是为product的price添加验证控件了。由于编辑时UnitPrice属于可选项,所以我们不用添加RequiredFieldValidator。我们需要做的是添加一个CompareValidator 来保证在输入了price的情况下,它的值是正确的货币格式和大于等于0。

  为EditIteTemplate添加一个ControlToValidate 属性为UnitPrice的CompareValidator 。将ErrorMessage 设为“The price must be greater than or equal to zero and cannot include the currency symbol”,Text设为“*”。为了指定UnitPrice的值必须大于等于0,将CompareValidator的Operator property设为GreaterThanEqual,ValueToCompare property设为“0”,Type property设为Currency。添加完这两个验证控件后,DataList的EditItemTemplate声明代码应该和下面差不多:

<EditItemTemplate>
 Product name:
 <asp:TextBox ID="ProductName" runat="server"
  Text='<%# Eval("ProductName") %>'></asp:TextBox>
 <asp:RequiredFieldValidator ID="RequiredFieldValidator1"
  ControlToValidate="ProductName"
  ErrorMessage="You must provide the product's name"
  runat="server">*</asp:RequiredFieldValidator>
 <br />
 Price:
 <asp:TextBox ID="UnitPrice" runat="server"
  Text='<%# Eval("UnitPrice", "{0:C}") %>'></asp:TextBox>
 <asp:CompareValidator ID="CompareValidator1"
  ControlToValidate="UnitPrice"
  ErrorMessage="The price must be greater than or equal to zero
    and cannot include the currency symbol"
  Operator="GreaterThanEqual" Type="Currency" ValueToCompare="0"
  runat="server">*</asp:CompareValidator><br />
 <br />
 <asp:Button ID="UpdateProduct" runat="server" CommandName="Update"
 Text="Update" /> 
 <asp:Button ID="CancelUpdate" runat="server" CommandName="Cancel"
 Text="Cancel" />
</EditItemTemplate>
</div>

  浏览一下页面。现在如果你编辑的时候不输入name或者在price里输入一个非法的值,在textbox后面会出现一个“*”。见图5。一个包含货币符号的值—比如$19.95 —被认为是合法的。CompareValidator的Currency 类型允许数字分隔符(比如句号和逗号)和前面带"+"或"-"号,但是不允许带货币符号。而在编辑界面里的UnitPrice又会以货币格式展现,这可能会让用户感到困惑。

http://files.weikejianghu.com/file_images/article/201605/2016051210524832.png
图 5: 非法输入 Textboxes 后面会出现“*”

  当验证控件象上面这样工作时,用户在编辑时需要手工移除掉货币符号,这是不可接受的。而且,如果在编辑的时候有非法输入,不管是点Update还是Cancel button,页面都会postback。理想的情况是,点Cancel button会返回DataList的编辑前状态,而不管输入的值是否合法。当然由于用户的浏览器可能不支持JavaScript 或者被禁用了,在更新product信息前我们要在UpdateCommand事件处理里确保页面的数据都是合法的。

  从EditItemTemplate的UnitPrice TextBox里移除货币符号

  当使用CompareValidator的货币类型时,输入不能包含任何货币符号,否则CompareValidator 会视为非法。然而编辑界面里的UnitPrice TextBox已经包含了一个货币符号,这就意味着用户在保存前必须手动移除它。我们有三种方法来修补它:

  配置EditItemTemplate 使 UnitPrice TextBox 的值的格式不为货币. 用RegularExpressionValidator 代替CompareValidator来检查正确格式的货币值 . 这里的挑战是用正则表达式不象用CompareValidator 那样直接,方便,需要写

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11ASP.NET文件处理如何操作
  • 2017-05-11ASP.NET 多次提交的解决办法2
  • 2017-05-11repeater隔行换色与鼠标停留在上面达到变色效果
  • 2017-05-11基于Asp.Net MVC4 Bundle捆绑压缩技术的介绍
  • 2017-05-11asp.net下配置数据源时出现: 未将对象引用设置到对象的实例。
  • 2017-05-11ASP.NET MVC Bundles 用法和说明(打包javascript和css)
  • 2017-05-11ASP.NET 用户控件的使用介绍
  • 2017-05-11ASP.NET MVC异常处理模块详解
  • 2017-05-11asp.net Excel转换为SQL Server的方法
  • 2017-05-11ASP.NET(AJAX+JSON)实现对象调用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET中各个后缀名的含义介绍
    • .net实现oracle数据库中获取新插入数据的id的方法
    • GridView自动增加序号(三种实现方式)
    • ASP.NET MVC中图表控件的使用方法
    • ASP.NET上传图片并生成可带版权信息的缩略图
    • asp.net jQuery Ajax用户登录功能的实现
    • asp.net 文件上传实例汇总
    • ASP.NET Calendar日历(日期)控件使用方法
    • AutoCAD .Net禁止图元被删除的方法
    • NopCommerce架构分析之(五)Model绑定Action参数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有