欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析-創(chuàng)新互聯

這篇文章主要為大家展示了“ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析”這篇文章吧。

十年的安吉網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網整合營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整安吉建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯公司從事“安吉網站設計”,“安吉網站推廣”以來,每個客戶項目都認真落實執(zhí)行。

使用示例:


首先我們使用nuget安裝 FluentValidation

Nuget安裝命令:Install-Package FluentValidation -Version 7.6.104

由于FluentValidation的驗證是基于模型的,所以,我們先來建立一個Person

public class Person
 {
  /// <summary>
  /// 姓名
  /// </summary>
  public string Name { get; set; }
  /// <summary>
  /// 年齡
  /// </summary>
  public int Age { get; set; }
  /// <summary>
  /// 性別
  /// </summary>
  public bool Sex { get; set; }

 }

有了模型,要想驗證模型,肯定得有驗證器才行,于是我們在創(chuàng)建一個Person的驗證器

public class PersonValidator : AbstractValidator<Person>
 {
  public PersonValidator()
  {
   this.RuleFor(p => p.Name)
    .NotEmpty()
    .WithMessage("名字不能為空");
   this.RuleFor(p => p.Age)
    .NotEmpty()
    .WithMessage("年齡不能為空!!");
  }
 }

驗證器必須繼承自AbstractValidator<T> ,泛型T表示該驗證器驗證的實體,在構造函數里通過this.RuleFor為指定的屬性設置驗證,在上述配置中為Person的Name和Age屬性都設置了非空,并且給出了相應的錯誤消息。

現在實體有了,驗證器也有了,就差東風了。

class Program
 {
  static void Main(string[] args)
  {
   Server(new Person { });

   Console.ReadKey(true);
  }

  private static void Server(Person model)
  {
   var validator = new PersonValidator();

   ValidationResult result = validator.Validate(model);
   if (!result.IsValid)
   {
    foreach (var failure in result.Errors)
    {
     //失敗的屬性名稱,如錯誤信息
     Console.WriteLine("Property " + failure.PropertyName + " failed validation. Error was: " + failure.ErrorMessage);
    }
   }
   Console.WriteLine("驗證完成!!");
  }
 }

在Server方法中需要一個參數Person,Person是個對象,里面有3個屬性Name、Age、Sex,在Server內部我們創(chuàng)建了一個Person驗證器對象,用它來驗證我們的參數model,  驗證后會返回一個驗證結果。這個結果有2個重要的參數,第一是IsValid,驗證通過的時候返回True,第二個是Errors,他里面存放的是所有驗證失敗的信息,在驗證失敗的時候通過遍歷Errors即可獲取到所有錯誤信息,如上所示通過錯誤信息的PropertyName就能知道是哪個對象出錯了,而ErrorMessage自然就對應這個Property所出錯內容的WithMessage了。下面是運行結果

ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析

ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析

ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析

至此,我們能夠使用基本驗證了。

但在我們實際應用中不一定會像上述案例一樣一帆風順,也許我們的Person里會有一個Address屬性,他的類型不是一個String,而是一個對象Address,如下所示

public class Person
 {
  /// <summary>
  /// 姓名
  /// </summary>
  public string Name { get; set; }
  /// <summary>
  /// 年齡
  /// </summary>
  public int Age { get; set; }
  /// <summary>
  /// 性別
  /// </summary>
  public bool Sex { get; set; }

  /// <summary>
  /// 地址
  /// </summary>
  public Address Address { get; set; }
 }
public class Address
 {
  /// <summary>
  /// 家庭地址
  /// </summary>
  public string Home { get; set; }

  /// <summary>
  /// 家庭電話
  /// </summary>
  public string Phone { get; set; }
 }

假如Address也有一個驗證器

public class AddressValidator : AbstractValidator<Address>
 {
  public AddressValidator()
  {
   this.RuleFor(m => m.Home)
    .NotEmpty()
    .WithMessage("家庭住址不能為空");

   this.RuleFor(m => m.Phone)
    .Length(11, 12)
    .WithMessage("電話必須是11-12位之間");
  }
 }

現在需求變了,在Person實體的要求里不僅要求Name、Age不能為空,并且還要求Address下的Home和Phone滿足AddressValidator的要求,這可怎么辦呢?

當然你可以像這樣做

public class PersonValidator : AbstractValidator<Person>
 {
  public PersonValidator()
  {
   this.RuleFor(p => p.Name)
     .NotEmpty()
     .WithMessage("名字不能為空");
   this.RuleFor(p => p.Age)
    .NotEmpty()
    .WithMessage("年齡不能為空!!");

   this.RuleFor(p => p.Address.Home)
    .MinimumLength(5)
    .WithMessage("家庭住址短長度為5");

  }
 }

通過Person.Address去給每一個屬性配置校驗,這并不是不能完成,但如果Address屬性比較比較多,在配置起來的時候重復工作量大大提高,并且人家AddressValidator已經完成配置了,你再來配置一遍,可以算是在浪費生命嗎?

幸好,FluentValidation提供了一種為屬性設置驗證器的機制。

public class PersonValidator : AbstractValidator<Person>
 {
  public PersonValidator()
  {
   this.RuleFor(p => p.Name)
     .NotEmpty()
     .WithMessage("名字不能為空");
   this.RuleFor(p => p.Age)
    .NotEmpty()
    .WithMessage("年齡不能為空!!");

   this.RuleFor(p => p.Address)
    .NotNull()
    .WithMessage("地址不能為空")
    .SetValidator(new AddressValidator());

  }
 }

通過這樣我們就將Address下的Home和Phome的驗證追加到Person的Address屬性上去了。

ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析

以上是“ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!

名稱欄目:ASP.NET全棧開發(fā)教程之前后臺校驗結合的示例分析-創(chuàng)新互聯
地址分享:http://aaarwkj.com/article42/dsjdhc.html

成都網站建設公司_創(chuàng)新互聯,為您提供網站制作電子商務、網站營銷、網站建設網站內鏈、用戶體驗

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

小程序開發(fā)
国产av麻豆全部免费| 美女高潮久久久777| 91麻豆成人国产在线观看| 国产乱子一区二区三区| 国产精品毛片一区二区三区| 日韩欧美麻豆不卡一区二区| 亚洲青涩精品一区二区三区| 久久婷婷精品国产亚洲av| 国产精品一区二区三区久久| 欧美激情日韩精品久久久| 国产av无毛一区二区三区| 大片天天看菲色亚洲黄色| 日韩欧美国产精品专区| 日本 一区二区在线| 日韩欧美亚洲国产另类| 亚洲中文乱码一区二区| 久久久精品国产亚洲av网黑人| 日韩精品激情视频在线| 国产91在线精品超碰人人| 一区二区三区欧美影片| 国产成十人十综合十亚洲| 亚洲av成人精品日韩一区麻豆| 欧美亚洲精品在线观看| 丁香六月五月色婷婷网| 欧美日韩一区二区综合在线视频| 国产精品白浆大屁股一区二区三 | 欧美国产精品中文字幕| 国产三级在线视频不卡| 九九热这里只有免费视频| 亚洲天堂男人的天堂狠狠操| 在线播放亚洲一区二区三区| 日本在线观看高清区一区二| 日韩欧美亚洲视频另类| 高清日本一区二区三区不卡片| 国产精品自偷自偷自偷| 亚洲av永久精品桃色| 精品欧美黑人一区二区| 亚洲综合av一区二区| 婷婷中文字幕在线不卡视频| 国产精品无卡无在线播放| 日韩中文字幕欧美国产|