欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用Data?Annotations進行手動數(shù)據(jù)驗證

 更新時間:2022年06月22日 14:26:34   作者:天方  
這篇文章介紹了C#使用Data?Annotations進行手動數(shù)據(jù)驗證的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

Data Annotations是在Asp.Net中用于表單驗證的,它通過Attribute直接標記字段的有效性,簡單且直觀。在非Asp.Net程序中(如控制臺程序),我們也可以使用Data Annotations進行手動數(shù)據(jù)驗證的,一個簡單的例子如下(需要添加System.ComponentModel.DataAnnotations.dll的引用):

    static void Main(string[] args)
    {
        var user = new User();
        var context = new ValidationContext(user, null, null);

        var results = new List<ValidationResult>();
        Validator.TryValidateObject(user, context, results, true);

        foreach (var validationResult in results)
        {
            Console.WriteLine(validationResult.ErrorMessage);
        }
    }

    class User
    {
        [Required]
        public string Name { get; set; }

        [Range(10, 50)]
        public int Age { get; set; }
    }

 編寫自己的Data Annotations

雖然系統(tǒng)已經(jīng)自帶了常用的驗證Attribute,但是,在實際應用中,我們仍然免不了要編寫自己的驗證規(guī)則,首先我們來看下其結構:

    

可以看出,要編寫一個自己的驗證規(guī)則是非常簡單的,只需要繼承自ValidationAttribute類,并重載IsValid方法即可。一個簡單的示例如下:

    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class CountryAttribute : ValidationAttribute
    {
        public string AllowCountry { get; set; }

        public override bool IsValid(object value)
        {
            return string.Equals(value, AllowCountry);
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (string.Equals(value, AllowCountry))
                return ValidationResult.Success;
            else
                return new ValidationResult(string.Format("{0} 字段非法", validationContext.DisplayName), new []{ validationContext.MemberName});
        }
    }

從上我們可以看到,IsValid是有兩個版本的,我們實際上只需要重載一個即可,如果需要自定義錯誤信息可以用下面那個。 如果兩個版本都重載了默認情況下使用下面的那個高級的版本。

 更多信息:

關于Data Annotations的更多知識這里就不做介紹了,感興趣的朋友可以參看這篇文章:DataAnnotations Validation for Beginner

 WPF中的數(shù)據(jù)驗證:

實際上,數(shù)據(jù)驗證往往并非用于前例所示的控制臺程序程序,而是用于WPF這類GUI程序中。 WPF程序中也有一套非常完善的數(shù)據(jù)驗證框架值得學習一下,限于篇幅這里就不多介紹了,感興趣的朋友可以看看這篇文章:Data validation in WPF

到此這篇關于C#使用Data Annotations進行手動數(shù)據(jù)驗證的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C#中泛型舉例List<T>與DataTable相互轉換

    C#中泛型舉例List<T>與DataTable相互轉換

    這篇文章介紹了C#中泛型舉例List<T>與DataTable相互轉換的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#中Sleep() 和 Wait()的區(qū)別小結

    C#中Sleep() 和 Wait()的區(qū)別小結

    Sleep()和 Wait()是兩個不同的方法,用于控制線程的執(zhí)行,本文主要介紹了C#中Sleep()和Wait()的區(qū)別小結,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • c#使用熱鍵實現(xiàn)程序窗口隱藏示例

    c#使用熱鍵實現(xiàn)程序窗口隱藏示例

    下面我們將演示如何通過熱鍵隱藏窗口,會用到DllImports of Win32 API、CallBacks/Delegates,定制事件與事件的句柄,大家參考使用吧友
    2014-01-01
  • C# 6.0 內插字符串(Interpolated Strings )的使用方法

    C# 6.0 內插字符串(Interpolated Strings )的使用方法

    這篇文章主要為大家詳細介紹了C# 6.0 內插字符串的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • C#加密在實際中的應用

    C#加密在實際中的應用

    在系統(tǒng)的管理員有著實際的應用,對于一個數(shù)據(jù)庫管理系統(tǒng)來說,數(shù)據(jù)庫安全還是挺重要的,所以在存入到數(shù)據(jù)庫的密碼通常都是加密的
    2012-11-11
  • C#實現(xiàn)簡易灰度圖和酷炫HeatMap熱力圖winform(附DEMO)

    C#實現(xiàn)簡易灰度圖和酷炫HeatMap熱力圖winform(附DEMO)

    本文主要介紹了C#實現(xiàn)簡易灰度圖和酷炫HeatMap熱力圖winform(附DEMO),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C#讀取多條數(shù)據(jù)記錄導出到Word之圖片輸出改造

    C#讀取多條數(shù)據(jù)記錄導出到Word之圖片輸出改造

    這篇文章主要為大家詳細介紹了C#讀取多條數(shù)據(jù)記錄并導出到Word標簽模板中的圖片輸出問題,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-11-11
  • 在C#中如何使用ResNet50v2進行圖像識別

    在C#中如何使用ResNet50v2進行圖像識別

    ONNX?運行時推理可以實現(xiàn)更快的客戶體驗和更低的成本,支持來自深度學習框架如?PyTorch和TensorFlow/Keras以及經(jīng)典機器學習庫如?scikit-learn、LightGBM、XGBoost?等的模型,這篇文章主要介紹了在C#中如何使用ResNet50v2進行圖像識別,需要的朋友可以參考下
    2024-07-07
  • c# 生成隨機時間的小例子

    c# 生成隨機時間的小例子

    這篇文章介紹了c# 生成隨機時間的小例子,有需要的朋友可以參考一下
    2013-08-08
  • C# 數(shù)獨求解算法的實現(xiàn)

    C# 數(shù)獨求解算法的實現(xiàn)

    這篇文章主要介紹了C# 數(shù)獨求解算法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01

最新評論