一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

在Silverlight應用程序中進行數據驗證

概述

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

本文將介紹在Silverlight應用程序中如何進行數據驗證。

準備知識

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

1.在綁定引擎中執(zhí)行數據轉換時拋出異常

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

為了在驗證出錯時能夠接收到通知,我們必須要在綁定對象上設置如下兩個屬性為true:

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

NotifyOnValidationError:告訴綁定引擎當有驗證錯誤發(fā)生或者錯誤排除時觸發(fā)BindingValidationError事件

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

TerryLee_0154

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

TerryLee_0155

這里Added表示新增一個驗證異常,Removed表示排除了一個驗證異常。下面通過一個實例我們看一下如何使用它們進行數據的驗證。

 

 

實例

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

/// <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));        }    }}

編寫數據綁定,如下代碼所示,設置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>

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

/// <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 = "年齡驗證成功";        messageAge.Validation = true;    }}

 

 

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

TerryLee_0156

TerryLee_0157

通過這樣的方式,我們就可以在Silverlight中對于數據輸入做驗證了。

總結

本文介紹了如何在Silverlight應用程序進行數據驗證,希望對大家有所幫助。

NET技術在Silverlight應用程序中進行數據驗證,轉載需保留來源!

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

主站蜘蛛池模板: 91精品免费看 | 看大片全色黄大色黄 | 在线视频国产一区 | 福利视频一区二区 | 国产精品欧美激情在线播放 | 国产精品久久久福利 | 色婷婷香蕉| 好吊色青青草 | 日本免费网站观看 | 国产男人和女人做性全部视频 | 欧美91在线 | 涩涩涩涩爱 | 亚洲黄色小说视频 | 欧美xx在线 | 精品日韩二区三区精品视频 | 六月丁香婷婷激情 | 成人毛片在线视频 | 免费成人小视频 | 精品久久久噜噜噜久久7 | 精品一区二区三区在线视频 | 黄色网页在线观看 | 色毛片 | 四虎永久在线日韩精品观看 | 在线精品国产一区二区 | 亚洲成人高清 | 国产精品网站在线进入 | 加勒比东洋精品映画防屏蔽 | 日韩三级中文 | 国内精品福利在线视频 | 亚洲性色成人 | 2021国产精品自产拍在线 | 成人a毛片手机免费播放 | 午夜视频在线播放 | 国产一区二区三区不卡观 | 99精品福利视频 | 日韩中文字幕免费观看 | 极品美女一级毛片免费 | 中文字幕精品一区二区三区在线 | 国内精品免费一区二区三区 | 亚洲精品午夜级久久久久 | 国产精品免费大片 |