<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          .NET 8中使用開源驗證組件FluentValidation,驗證就這么簡單

          共 3967字,需瀏覽 8分鐘

           ·

          2024-04-10 16:41

          FluentValidation簡介

              FluentValidation 是 .NET 的開源驗證庫,它是使用 Fluent 接口的 .NET 驗證庫,以及可以lambda 表達式來構(gòu)建強類型驗證規(guī)則的 ,這樣可以讓開發(fā)人員以清晰簡潔的方式表達驗證邏輯,使其易于讀取、編寫和維護。在github有8.6k的Star,還是不錯的.NET開源組件。 github地址 :github.com/FluentValidation/FluentValidation 文檔地址 :docs.fluentvalidation.net

          在.NET 8中使用FluentValidation

          FluentValidation更新也比較快,同步支持.NET 8。下面將介紹在.NET 8中使用步驟。

          1、安裝 FluentValidation的NuGet 包

          新建一個.NET 8控制臺項目,使用nuget包管理器搜索FluentValidation安裝或者用如下nuget控制臺命令安裝。

                
                  dotnet add package FluentValidation
                
              

          2、新建一個客戶測試模型來做驗證

          客戶測試模型有姓名,地址,郵編等,如下:

                
                      public class Customer
                
                
                      {
                
                
                          public string Name { get; set; }
                
                
                          public string Address { get; set; }
                
                
                          public string Postcode { get; set; }
                
                
                          public int Discount { get; set; }
                
                
                          public string Email { get; set; }
                
                
                          public int age { get; set; }
                
                
                          public bool disDiscount {  get; set; }
                
                
                      }
                
              

          3、使用 FluentValidation來驗證

          新建一個驗證類,繼承泛型接口AbstractValidator,并在這個類中寫驗證規(guī)則。代碼如下:

                
                  public class CustomerValidator : AbstractValidator<Customer>
                
                
                      {
                
                
                          public CustomerValidator()
                
                
                          {
                
                
                              RuleFor(x => x.Name).NotEmpty().WithMessage("姓名不能為空");//判斷為空
                
                
                              //不允許等于0。該規(guī)則還包含一個條件,即只有當(dāng)disDiscount屬性為真時才生效。
                
                
                              RuleFor(x => x.Discount).NotEqual(0).When(x => x.disDiscount);
                
                
                              RuleFor(x => x.Address).Length(20, 250);//長度
                
                
                              //自定義驗證
                
                
                              RuleFor(x => x.Postcode).Must(BeAValidPostcode).WithMessage("請輸入郵政編碼");
                
                
                             //驗證郵箱
                
                
                              RuleFor(x => x.Email).EmailAddress().WithMessage("請輸入正確的郵箱");
                
                
                          }
                
                
                          private bool BeAValidPostcode(string postcode)
                
                
                          {
                
                
                              return true;
                
                
                              // 自定義規(guī)則
                
                
                          }
                
                
                      }
                
              

          4、調(diào)用規(guī)則

          在main方法中模擬調(diào)用。

                
                       static void Main(string[] args)
                
                
                       {
                
                
                           var customer = new Customer();
                
                
                           customer.Name = "張山";
                
                
                           customer.Email = "aaa";
                
                
                           var validator = new CustomerValidator();
                
                
                           // 驗證規(guī)則
                
                
                           ValidationResult results = validator.Validate(customer);
                
                
                           // 驗證結(jié)果是否通過
                
                
                           bool success = results.IsValid;
                
                
                           //返回當(dāng)前錯誤信息
                
                
                           List<ValidationFailure> failures = results.Errors;
                
                
                       }
                
              

          上面是個調(diào)用的demo,需要驗證的話可以用results.IsValid來進行條件判斷,并寫驗證通過邏輯。

          5、效果如下:

          afe2efd2d8537da4d3078f954412d7a4.webp

          上面郵箱輸入錯誤,結(jié)果會返回false,并提示郵箱錯誤。這樣通過上面4步驟,一個簡單的客戶驗證就做好了。

          結(jié)語

          本文介紹了在.NET 8 中的 FluentValidation組件的步驟,FluentValidation 提供了一種干凈且富有表現(xiàn)力的方式來處理應(yīng)用程序中的驗證。上面的示例所示,使用 FluentValidation 可以將驗證邏輯與業(yè)務(wù)邏輯分開,從而增加代碼的維護性和可讀性。

          希望本文對大家有所收獲,大家對開源的FluentValidation組件有什么看法,前端如果有驗證過程,后端還有必要驗證嗎?FluentValidation還有億元嗎?歡迎留言討論或吐槽。



              

          關(guān)注公眾號DotNet開發(fā)跳槽?    

          瀏覽 17
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91 丝袜一区二区三区 | 四川操逼网站 | 天天日天天舔天天射 | 天天日天天射天天舔 | 影音先锋最新男人资源 |