<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        .NET驗證組件Fluent Validation使用指南

        來源:懂視網 責編:小采 時間:2020-11-27 22:38:46
        文檔

        .NET驗證組件Fluent Validation使用指南

        .NET驗證組件Fluent Validation使用指南:認識Fluent Vaidation. 看到NopCommerce項目中用到這個組建是如此的簡單,將數據驗證從業務實體類中分離出來,真是一個天才的想法,后來才知道這個東西是一個開源的輕量級驗證組建。 Fluent Validation 翻譯為:流暢驗證 開源Codeplex其主頁簡介
        推薦度:
        導讀.NET驗證組件Fluent Validation使用指南:認識Fluent Vaidation. 看到NopCommerce項目中用到這個組建是如此的簡單,將數據驗證從業務實體類中分離出來,真是一個天才的想法,后來才知道這個東西是一個開源的輕量級驗證組建。 Fluent Validation 翻譯為:流暢驗證 開源Codeplex其主頁簡介

        認識Fluent Vaidation.

          看到NopCommerce項目中用到這個組建是如此的簡單,將數據驗證從業務實體類中分離出來,真是一個天才的想法,后來才知道這個東西是一個開源的輕量級驗證組建。
         
          Fluent Validation 翻譯為:流暢驗證
         
          開源Codeplex其主頁簡介:該組件是一個輕量級的.NET類庫,使用流暢的接口定義和lambda表達式為構建一個業務類的驗證規則(A small validation library for .NET that uses a fluent interface and lambda expression for building validation rules for you business objects.)
         
          這個類庫不僅僅可以使用的asp.net mvc項目中,普通的類庫中也可以使用,當然在asp.net form項目中也支持。

        怎么使用:  
          是不是好用,還要看使用時是否真的像其官網建議描述一樣。我比較喜歡其官網上的例子,一眼就能看出用法上的感覺,絕對是如其名,流暢,這個也一種解釋型語言常見的的一種用法,無限的對一個類型支持無限度個屬性擴展。

        業務實體類:
         
        代碼如下:
         public class Person
         {
             public string NameField;
             public int Id { get; set; }
             public string Surname { get; set; }
             public string Forename { get; set; }
             public List<Person> Children { get; set; }
             public string[] NickNames { get; set; }
             public DateTime DateOfBirth { get; set; }
             public int? NullableInt { get; set; }
             public Person()
             {
                 Children = new List<Person>();
                 Orders = new List<Order>();
             }
             public int CalculateSalary()
             {
                 return 20;
             }
             public Address Address { get; set; }
             public IList<Order> Orders { get; set; }
             public string Email { get; set; }
             public decimal Discount { get; set; }
             public double Age { get; set; }
             public int AnotherInt { get; set; }
             public string CreditCard { get; set; }
             public int? OtherNullableInt { get; set; }
         }
         public interface IAddress
         {
             string Line1 { get; set; }
             string Line2 { get; set; }
             string Town { get; set; }
             string County { get; set; }
             string Postcode { get; set; }
             Country Country { get; set; }
         }
         public class Address : IAddress
         {
             public string Line1 { get; set; }
             public string Line2 { get; set; }
             public string Town { get; set; }
             public string County { get; set; }
             public string Postcode { get; set; }
             public Country Country { get; set; }
             public int Id { get; set; }
         }
         public class Country
         {
             public string Name { get; set; }
         }
         public interface IOrder
         {
             decimal Amount { get; }
         }
         public class Order : IOrder
         {
             public string ProductName { get; set; }
             public decimal Amount { get; set; }
         }

        對Person的指定驗證規則:  
         
        代碼如下:
         using FluentValidation;
         public class CustomerValidator: AbstractValidator<Customer>
         {
           public CustomerValidator()
           {
             RuleFor(customer => customer.Surname).NotEmpty();
             RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name");
             RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount);
             RuleFor(customer => customer.Address).Length(20, 250);
             RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode");
           }
           private bool BeAValidPostcode(string postcode)
           {
             // custom postcode validating logic goes here
           }
         }
         // 手動驗證規則
         Customer customer = new Customer();
         CustomerValidator validator = new CustomerValidator();
         ValidationResult results = validator.Validate(customer);
         bool validationSucceeded = results.IsValid;
         IList<ValidationFailure> failures = results.Errors;

        Flent validation怎么與asp.net mvc驗證庫整合?
          如果在asp.net mvc中現實中這么用,可能會有很多人不會知道他,我們知道Asp.net MVC項目中有自己的驗證機構[企業庫VAB(Validation Application Block),基于Attribute聲明式驗證],其使用方法,也被我們都一直很認可,但其也有很多不夠靈活的,但Fluent Validation確實更靈活一點。使用起來多變性,流暢,而且驗證規則是一個單獨的類,是和業務實體對象分類的,我們不需要翔VAB一樣,需要在業務實體類上使用Attribute注冊驗證規則。
         
          既然其不是ASP.NET MVC的默認驗證規則類庫,我們就需要注冊到ASP.NET MVC的驗證規則庫中。
         
        代碼如下:
         // 在Global.asax.cs中的Applicaton_Start()函數中注冊為asp.net mvc默認的驗證規則庫。
         // fluent validation
         FluentValidationModelValidatorProvider provider = new FluentValidationModelValidatorProvider(new AttributedValidatorFactory());
         ModelValidatorProviders.Providers.Add(provider);
         DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

        注意:
          1,)作為Fluent Validation驗證規則類須繼承AbstractValidator<T>;
         
          2,)我們也可以仿照NopCommerce的處理方法,對AttributeValidatorFactory類的Validator(Type type)函數重寫,在特殊的業務環境下支持其他驗證規則。

        本文適合對.net以及MVC有所了解的讀者,這里拋磚引玉,獻丑了

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        .NET驗證組件Fluent Validation使用指南

        .NET驗證組件Fluent Validation使用指南:認識Fluent Vaidation. 看到NopCommerce項目中用到這個組建是如此的簡單,將數據驗證從業務實體類中分離出來,真是一個天才的想法,后來才知道這個東西是一個開源的輕量級驗證組建。 Fluent Validation 翻譯為:流暢驗證 開源Codeplex其主頁簡介
        推薦度:
        標簽: 使用 驗證 net
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品V天堂中文字幕| 中文无码亚洲精品字幕| 男人扒开添女人下部免费视频| 亚洲性线免费观看视频成熟| 亚洲日韩乱码久久久久久| 亚洲伊人色一综合网| 黄网站色在线视频免费观看| 伊人久久大香线蕉亚洲五月天 | 免费真实播放国产乱子伦| 亚洲一区二区三区91| 一级女人18毛片免费| 亚洲综合一区二区三区四区五区| 国产亚洲美女精品久久久久| 免费乱码中文字幕网站| 91亚洲国产成人久久精品网站| 久久久国产精品无码免费专区| 中文字幕亚洲综合久久2| 久久99九九国产免费看小说| 91在线亚洲综合在线| 亚洲av无码天堂一区二区三区| 亚洲成人动漫在线观看| 久久电影网午夜鲁丝片免费| 亚洲国产成人久久精品软件| 亚洲人成人网站在线观看| 免费91最新地址永久入口| 国产乱色精品成人免费视频| 一级成人a做片免费| 4480yy私人影院亚洲| 女人被弄到高潮的免费视频 | 亚洲AV无码成人精品区狼人影院 | 久久这里只精品99re免费| 亚洲国产成人久久77| 免费看小12萝裸体视频国产| 成人精品视频99在线观看免费| 久久精品国产亚洲av高清漫画| 中文字幕在线视频免费| 亚洲妇女水蜜桃av网网站| 国产一级淫片免费播放| 久章草在线精品视频免费观看| 亚洲综合色丁香婷婷六月图片| 国产亚洲AV手机在线观看|