天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

在Silverlight應(yīng)用程序中進(jìn)行數(shù)據(jù)驗(yàn)證

概述

眾所周知,在ASP.NET應(yīng)用程序中,我們可以使用驗(yàn)證控件進(jìn)行數(shù)據(jù)輸入的驗(yàn)證,遺憾的是在Silverlight中并沒有提供任何驗(yàn)證控件,但Silverlight對于雙向數(shù)據(jù)綁定還是提供了一些基本的數(shù)據(jù)驗(yàn)證支持,我們可以在set設(shè)置器中定義驗(yàn)證規(guī)則,并對于不合法數(shù)據(jù)拋出異常,最后通過捕獲驗(yàn)證錯(cuò)誤事件來實(shí)現(xiàn)數(shù)據(jù)的驗(yàn)證。

本文將介紹在Silverlight應(yīng)用程序中如何進(jìn)行數(shù)據(jù)驗(yàn)證。

準(zhǔn)備知識

Silverlight中如下兩種情況下,將會觸發(fā)驗(yàn)證錯(cuò)誤:

1.在綁定引擎中執(zhí)行數(shù)據(jù)轉(zhuǎn)換時(shí)拋出異常

2.在業(yè)務(wù)實(shí)體的set設(shè)置器中拋出異常

為了在驗(yàn)證出錯(cuò)時(shí)能夠接收到通知,我們必須要在綁定對象上設(shè)置如下兩個(gè)屬性為true:

ValidatesOnExceptions:告訴綁定引擎當(dāng)有異常發(fā)生時(shí)創(chuàng)建一個(gè)驗(yàn)證異常

NotifyOnValidationError:告訴綁定引擎當(dāng)有驗(yàn)證錯(cuò)誤發(fā)生或者錯(cuò)誤排除時(shí)觸發(fā)BindingValidationError事件

這兩個(gè)屬性都定義在Binding類中,如下代碼所示:

TerryLee_0154

BindingValidationError事件定義在FrameworkElement中,通過它可以接收到ValidationErrorEventArgs類型的參數(shù),而在ValidationErrorEventArgs中定義了一個(gè)很重要的屬性Action,它的定義如下:

TerryLee_0155

這里Added表示新增一個(gè)驗(yàn)證異常,Removed表示排除了一個(gè)驗(yàn)證異常。下面通過一個(gè)實(shí)例我們看一下如何使用它們進(jìn)行數(shù)據(jù)的驗(yàn)證。

 

 

實(shí)例

首先我們編寫一個(gè)簡單的業(yè)務(wù)類,由于數(shù)據(jù)綁定驗(yàn)證只能在雙向綁定中,所以這里需要實(shí)現(xiàn)INotifyPropertyChanged接口,如下代碼所示,在set設(shè)置器中我們對于數(shù)據(jù)的合法性進(jìn)行檢查,如果不合法則拋出一個(gè)異常:

/// <summary>/// Author:TerryLee/// http://www.cnblogs.com/Terrylee/// </summary>public class Person : INotifyPropertyChanged{    public event PropertyChangedEventHandler PropertyChanged;    private int _age;    public int Age    {        get { return _age; }        set {            if (value < 0)                throw new Exception("年齡輸入不合法!");            _age = value;            if (PropertyChanged != null)            {                PropertyChanged(this, new PropertyChangedEventArgs("Age"));            }        }    }    private String _name = "Terry";    public String Name    {        get { return _name; }        set {            if (value.Length < 4)                throw new Exception("姓名輸入不合法!");            _name = value;            if (PropertyChanged != null)            {                PropertyChanged(this, new PropertyChangedEventArgs("Name"));            }        }    }    public void NotifyPropertyChanged(String propertyName)    {        if (PropertyChanged != null)        {            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));        }    }}

編寫數(shù)據(jù)綁定,如下代碼所示,設(shè)置NotifyOnValidationError和ValidatesOnExceptions屬性為true,并且定義BindingValidationError事件:

<!--    http://www.cnblogs.com/Terrylee--><StackPanel Orientation="Horizontal" Margin="10">    <TextBox x:Name="txtName"  Width="200" Height="30"            Text="{Binding Name,Mode=TwoWay,            NotifyOnValidationError=true,            ValidatesOnExceptions=true}"            BindingValidationError="txtName_BindingValidationError">    </TextBox>    <my:Message x:Name="messageName"></my:Message></StackPanel><StackPanel Orientation="Horizontal" Margin="10">    <TextBox x:Name="txtAge" Width="200" Height="30"            Text="{Binding Age,Mode=TwoWay,            NotifyOnValidationError=true,            ValidatesOnExceptions=true}"            BindingValidationError="txtAge_BindingValidationError">    </TextBox>    <my:Message x:Name="messageAge"></my:Message></StackPanel>

實(shí)現(xiàn)BindingValidationError事件,在這里可以根據(jù)ValidationErrorEventAction來判斷如何進(jìn)行處理,在界面給出相關(guān)的提示信息等,如下代碼所示:

/// <summary>/// Author:TerryLee/// http://www.cnblogs.com/Terrylee/// </summary>void txtAge_BindingValidationError(object sender, ValidationErrorEventArgs e){    if (e.Action == ValidationErrorEventAction.Added)    {        messageAge.Text = e.Error.Exception.Message;        messageAge.Validation = false;    }    else if (e.Action == ValidationErrorEventAction.Removed)    {        messageAge.Text = "年齡驗(yàn)證成功";        messageAge.Validation = true;    }}

 

 

好了,現(xiàn)在來看一下最后的驗(yàn)證效果,如下圖所示:

TerryLee_0156

TerryLee_0157

通過這樣的方式,我們就可以在Silverlight中對于數(shù)據(jù)輸入做驗(yàn)證了。

總結(jié)

本文介紹了如何在Silverlight應(yīng)用程序進(jìn)行數(shù)據(jù)驗(yàn)證,希望對大家有所幫助。

NET技術(shù)在Silverlight應(yīng)用程序中進(jìn)行數(shù)據(jù)驗(yàn)證,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: AV一区AV久久AV无码 | 国产亚洲精品精华液 | 国产最新地址 | 女人高潮被爽到呻吟在线观看 | 韩国免费啪啪漫画无遮拦健身教练 | 日韩精品一区二区三区AV在线观看 | 女人被躁到高潮嗷嗷叫小 | 国产91综合| 国产人妻人伦精品1国产 | 青柠高清在线观看完整版 | 强开少妇嫩苞又嫩又紧九色 | 男人扒开添女人屁股 | 草莓湿漉漉是好事还是恶性 | 影音先锋男人资源813. | 公交车被CAO到合不拢腿 | 午理论理影片被窝 | 约艺术院校96年清纯白嫩 | 国产在线观看黄 | 中国jjzz| videossexotv极度另类 | 欧美18在线 | 成人小视频免费在线观看 | 网红主播 国产精品 开放90后 | 欧美亚洲日韩一道免费观看 | 风月宝鉴之淫乱英雄传 电影 | 亚洲精品沙发午睡系列 | 中文字幕人成乱码中国 | 色中色论坛网站 | 久久AV亚洲精品一区无码网 | 久久婷婷丁香五月色综合啪免费 | 亚洲国产精麻豆 | 快播欧美大片 | 毛片TV网站无套内射TV网站 | 国产极品美女视频福利 | 一本大道手机在线看 | 中文字幕精品无码一区二区 | 高h喷水荡肉爽文总攻 | 日本黄色网站在线观看 | 国产传媒在线观看 | 欧洲最大无人区免费高清完整版 | 永久免费看bbb |