国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET全棧開發教程之前后臺校驗結合詳解

ASP.NET全棧開發教程之前后臺校驗結合詳解

2020-05-29 15:46Gxqsd ASP.NET教程

這篇文章主要給大家介紹了關于ASP.NET全棧開發教程之前后臺校驗結合的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在Web系統開發時,往往會有存在大量的交互操作,交互就必須校驗數據的準確性啊,且不說一個字段可能存在多種校驗,若一個表單提交有10個字段難道我們要對這10個字段分別寫代碼去校驗嗎?如果是這樣,那每一個表單都要單獨去寫一份校驗豈不是太痛苦了?

為了解決這個問題,聰明的程序員們開始了“偷懶”!

今天我們介紹一位在.NET平臺下偷懶的——“FluentValidation”,正如其名,流利的驗證,他將我們的驗證開發工作變得流利甚至優美了起來。

接下來我們就來看看如何使用它吧。

首先我們使用nuget安裝 FluentValidation

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Person
 {
  /// <summary>
  /// 姓名
  /// </summary>
  public string Name { get; set; }
  /// <summary>
  /// 年齡
  /// </summary>
  public int Age { get; set; }
  /// <summary>
  /// 性別
  /// </summary>
  public bool Sex { get; set; }
 
 }

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

?
1
2
3
4
5
6
7
8
9
10
11
12
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屬性都設置了非空,并且給出了相應的錯誤消息。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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內部我們創建了一個Person驗證器對象,用它來驗證我們的參數model,  驗證后會返回一個驗證結果。這個結果有2個重要的參數,第一是IsValid,驗證通過的時候返回True,第二個是Errors,他里面存放的是所有驗證失敗的信息,在驗證失敗的時候通過遍歷Errors即可獲取到所有錯誤信息,如上所示通過錯誤信息的PropertyName就能知道是哪個對象出錯了,而ErrorMessage自然就對應這個Property所出錯內容的WithMessage了。下面是運行結果

ASP.NET全棧開發教程之前后臺校驗結合詳解

ASP.NET全棧開發教程之前后臺校驗結合詳解

ASP.NET全棧開發教程之前后臺校驗結合詳解

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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; }
 }
?
1
2
3
4
5
6
7
8
9
10
11
12
public class Address
 {
  /// <summary>
  /// 家庭地址
  /// </summary>
  public string Home { get; set; }
 
  /// <summary>
  /// 家庭電話
  /// </summary>
  public string Phone { get; set; }
 }

假如Address也有一個驗證器

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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的要求,這可怎么辦呢?

當然你可以像這樣做

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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提供了一種為屬性設置驗證器的機制。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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全棧開發教程之前后臺校驗結合詳解

初步認識和使用就先到這兒了。感謝各位看官。后續會持續更新,直到搭建完系統架構。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:https://www.cnblogs.com/Gxqsd/p/9326918.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 粉嫩欧美一区二区三区高清影视 | 欧美午夜精品一区二区三区电影 | 日韩精品视频在线观看一区二区 | 在线观看亚洲 | 亚洲国产精品自拍 | 91嫩草香蕉 | 国产成人精品一区二区三区视频 | 亚洲一区二区在线视频 | 日韩手机在线观看 | 中文字幕一区在线 | 中文字幕日韩欧美 | 国产高清视频一区二区 | 一区二区三区国产在线 | 久久精品视频网站 | 一级国产免费 | 韩日免费视频 | 国产中文字幕在线 | 国产一区二区在线免费 | 五月婷婷狠狠爱 | 在线免费观看视频 | 国产乱码精品1区2区3区 | 高清一区在线 | 久久久久久麻豆 | 中文字幕1区 | 51ⅴ精品国产91久久久久久 | 亚洲自拍偷拍精品 | 亚洲精品无码专区在线播放 | 中文字幕免费 | 国产高清精品一区二区三区 | 成人欧美一区二区三区色青冈 | 亚洲品质自拍视频网站 | 国产精品3区 | 国产亚洲欧美美 | 国产精品日产欧美久久久久 | 国产精品久久精品 | 中文av字幕 | 国产欧美一区二区三区在线看 | 久久精品香蕉 | 黄色av电影 | 免费成人黄色 | 成人午夜 |