Silverlight3系列(六)数据验证 Data Validation

本篇我们讨论SL3中的数据验证相关知识。

数据验证只会发生双向绑定的情况下,因为实体类需要实现INotifyPropertyChanged接口。在SL中数据绑定的时候如果遇到没有验证的数据,通常会忽略它。下面的表中,列出在双向绑定的时候,三种类型的错误:

1、不正确的数据。例如:本来是应该数字类型的,不应该输入字符或者其他字符,同时,也不能超出最大值。

2、对象属性的set异常。例如:在属性Id的set中有一个判断,如果有问题就抛出异常。

3、只读属性,你不能进行赋值操作。

如果是上面的错误,你不能忽略他们,因为sl的数据绑定不会给你任何可视化的提示信息。不正确的值保留在绑定控件中,但是没有应用到绑定对象中。

避免这个问题的好办法就是及时的提醒用户,输入有问题。最容易的途径包括:使用绑定对象的两个属性,ValidatesOnExceptions、NotifyOnValidationError,这些都会激活sl的错误提醒事件。

1、ValidatesOnException

ValidatesOnException是实现其他验证的第一步。在你设置ValidatesOnException=true之后,数据绑定将会对任何错误做出响应,不管它是出现在类型转换还是属性的setter。但是,当设置ValidatesOnException=false(默认为 false)之后,数据绑定不会提示任何错误。绑定对象没有被更新,错误的值保留在了绑定控件中。

下面是绑定控件的设置例子

<TextBox x:Name="customerId" Grid.Column="1" Grid.Row="1" Text="{Binding  CustomerId, Mode=TwoWay, ValidatesOnExceptions=true}"></TextBox>

这样设置之后,你的控件在双向绑定之后可以进行捕获和显示错误的能力,具有这种能力的控件包括。

*   TextBox

*   PasswordBox

*   CheckBox

*   RadioButton

*   ListBox

*   ComboBox

知识点:验证状态ValidationState包括三种:Valid、InvalidUnfocused、InvalidFocused。

这里我们再一个属性的setter中添加验证,

代码

public virtual int CustomerId
         {
             get { return this._intCustomerId; }
             set
             {
                 int result;
                 if (Int32.TryParse(value.ToString(), out result) == false)
                     throw new ArgumentException("必须是数字");
                 this._intCustomerId = result;
                 OnPropertyChanged("CustomerId");
             }
         }

时间: 2024-10-30 15:57:36

Silverlight3系列(六)数据验证 Data Validation的相关文章

Silverlight的数据验证Input validation

传统的验证方法 开发应用程序最基本的的工作内容是进行数据验证.Silverlight的应用程序也不例外.Silverlight应用一定程度上类似于Windows Form应用.其数据验证可以用Winform传统的方法,如在准备提交时的代码中逐项检查数据的合法性.例如一个窗体中有若干输入框,和一个提交按钮.输入完毕后,点击提交按钮.我们可以在提交按钮Click事件处理程序中检查每个输入框的输入合法性.如果不合法,或者用一个弹出窗口提示用户,或者用别的一些方式(这些方式很多的,完全取决于UI设计),

C++中正则表达式 的 子表达式(subexpressions) 的数据验证

子表达式(subexpressions)的 数据验证(data validation), 可以通过括号"()"分解正则表达式的子表达式; 然后使用下标标示符[], 输出相应的子表达式, "0"代表全体, "1"代表第一个括号, 依次递加; 通过对于问号项?是否匹配, 验证正则表达式的匹配式; 代码: #include <iostream> #include <string> #include <boost/regex

Swing通用数据验证模块

这段时间真是忙得要死,一方面要开发公司项目的系统框架,要将项目分成不同的子项目,编写核心 代码:另一方面要将极限编程(XP)引入团队开发,部署各类 XP需要的服务例如subversion啦,ant+ivy 啦,Hudson啦等等.顺便说句题外话,ubuntu还真是不是一般的好用,建议有能力的全部转到ubuntu上去 开发. 我目前开发的这个框架的客户端是具肥的客户端,也就是Swing客户端了.Swing应用相对于Web应用有 很多优势,因为它更肥.数据验证就是其中一个.当然现在的Web应用通过使

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converte

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converter 7 数据转换 在普通的情况下,数据从后台到前台显示,没有任何变化.看起来是符合逻辑的,但是有可能不是你想要的效果,数据源的数据可能是的低级别的(这里的低级别是说数据比较原始,或者说是数据库可以理解的,不是最终用户可以理解的形式),你不想让他直接显示在界面上.例如:你可能会将数字变成用户可以看懂的形式.或者是想让日期显示成长格式的字符串.如果是这样的话,你需要将数据转换成正确的显示

MVC5 + EF6 + Bootstrap3 (15) 应用ModelState和Data Annotation做服务器端数据验证

原文:MVC5 + EF6 + Bootstrap3 (15) 应用ModelState和Data Annotation做服务器端数据验证 Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-server-side-validation.html  系列教程:MVC5 + EF6 + Bootstrap3 上一节:MVC5 + EF6 + Bootstrap3 (14) 分部视图PartialView 源码下

Silverlight实例教程 - Validation数据验证开篇

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation 数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation 服务器端异步数据验证 Silverlight

silverlight Validation MVVM下用户提交数据验证捕获

转自http://www.cnblogs.com/HalfwayMonk/archive/2011/01/08/1930495.html @jv9的数据验证系列文章:Silverlight实例教程Validation验证系列中已经详细介绍了silverlight下的各种数据验证的方法.我也看着这些文章学习过来的. 现在在实践MVVM,需要在MVVM下实现提交数据验证,一步一步来. 参考系列文章的第四篇,定义一个验证的基类实现:INotifyPropertyChanged和IDataErrorIn

Silverlight实例教程 - Validation服务器端异步数据验证

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例

Silverlight实例教程 - Validation数据验证基础属性和事件

Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础属性和事件 Silverlight实例教程 - Validation数据验证DataAnnotation机制和调试技巧 Silverlight实例教程 - Validation客户端同步数据验证 Silverlight实例教程 - Validation服务器端异步数据验证 Silverlight实例