婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET MVC5添加驗證(4)

ASP.NET MVC5添加驗證(4)

熱門標簽:辦公用地圖標注網點怎么操作 南昌自動外呼系統線路 寧德防封版電銷卡 云南外呼系統代理 聊城智能電銷機器人電話 海東防封電銷卡 上海市三維地圖標注 西寧電銷外呼系統公司 安陸市地圖標注app

有時候我們網站需要添加驗證,這一節我們演示下怎樣使用ASP.NET MVC5添加驗證。

1.在Model類里面添加驗證,代碼如下:

 public class Movie
 {
  public int ID { get; set; }
  [StringLength(60,MinimumLength=3,ErrorMessage="主題的長度必須在3到60個字符")]
  public string Title { get; set; }
 
  [Display(Name="Release Date")]
  [DataType(DataType.Date)]
  [DisplayFormat(DataFormatString="{0:yyyy-MM-dd}",ApplyFormatInEditMode=true)]
  public DateTime ReleaseDate { get; set; }
  [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
  [Required]
  [StringLength(30)]
  public string Genre { get; set; }
  [Range(1,100)]
  [DataType(DataType.Currency)]
  public decimal Price { get; set; }
 
  [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
  public string Rating { get; set; }
 
 
 }

這個StringLength屬性,設置了最大的字符串長度,限制了數據庫,所以數據庫結構會改變。我們先來看看數據庫結構沒改變之前的定義是咋樣的

2.請看圖:

3.在上面的圖片中,你看到,所有的string類型的字段,都是NVARCHAR (MAX),我們將會使用數據庫遷移技術,來更新表結構,打開程序包管理器控制臺,輸入下面的指令:
  add-migration DataAnnotations
  update-database
當這個指令結束之后,VS打開生成的遷移文件,在Up方法中,你看到了添加的數據庫約束:

4.請看圖片:

5.下面,我們再來打開數據庫,看下數據表結構發生了什么變化:

6.

這個驗證屬性指定了你想要應用到Model中的屬性。Required和MinimumLength屬性,表明:必須要有一個值,但是不會阻止用戶輸入一個空格來滿足這個驗證。RegularExpression屬性,用來限制,什么字符可以被輸入,在上面的代碼中Genre和Rating字段必須只能是字母,(空格,數字還有其他的特殊字符都是不被允許的。),Range屬性約束了一個值必須在某個特定的范圍之內,StringLength屬性讓你可以設置,字符串的最大長度,值類型(例如;decilmal,int float,DateTime)都是內在需要的,然而對于Required來說,則并不需要。
Code First 確保你指定在Model中的驗證,在數據庫數據保存前,能夠被驗證。例如下面的代碼,當SaveChanges調用的時候,將會拋出一個錯誤,因為有一些必須要的字段丟失了。

MovieDBContext db = new MovieDBContext();
 Movie movie = new Movie();
 movie.Title = "Gone with the Wind";
 db.Movies.Add(movie);
 db.SaveChanges(); // = Will throw server side validation exception 

7. 數據驗證,通過 .NET Framework 自動的被執行,這可以使你的程序更健壯,同樣它會確保你,不會忘記去驗證一些,還有不是故意的要讓不好的數據更新到數據庫中。

8.下面我們開始驗證吧,運行項目;

點擊這個新建的鏈接,去添加一個新的movie。輸入不合法的數據,然后就看到錯誤了。

Note to support jQuery validation for non-English locales that use a comma (",") for a decimal point, you must include the NuGet globalize as described previously in this tutorial.

9.

注意到:表單自動的使用了一個紅色的邊框來高亮顯示要驗證的文本框里面的錯誤數據。錯誤消息就顯示在旁邊。(PS:這里我節省時間,就隨便大概翻譯一下了,只是把大概的意思翻出來。)
這個真正的好處是,你不必為了可以使用validation UI,而在控制器,或者在視圖頁面中去改變代碼,控制器和視圖頁面,捕獲了你在前面的Model類里面寫的驗證規則。測試驗證,我們使用編輯方法,這個驗證同樣適用于編輯的功能。
表單的數據,不會提交到服務器,除非沒有客戶端錯誤的驗證機制。你可以在瀏覽器中按F12,并在Post方法中,設置斷點來調試。

 10.驗證是怎樣出現在視圖和方法里面的呢:

你可能想到的是這個界面的驗證是怎樣在沒有修改控制器和視圖的情況下產生的呢。下面的代碼,是控制器的代碼,你之前創建的,沒有任何修改的

 public ActionResult Create()
 {
   return View();
 }
 // POST: /Movies/Create
 // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
 // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
 [HttpPost]
 [ValidateAntiForgeryToken]
 public ActionResult Create([Bind(Include = "ID,Title,ReleaseDate,Genre,Price,Rating")] Movie movie)
 {
   if (ModelState.IsValid)
   {
     db.Movies.Add(movie);
     db.SaveChanges();
     return RedirectToAction("Index");
   }
   return View(movie);
 }

第一個Create方法(HTTP GET)展示初始的數據,第二個Create方法,處理表單的提交。第二個create方法,調用這個ModelState.IsValid 來檢查movie實體中是否有驗證不通過的數據。通過調用ModelState.IsValid可以來判斷是否有驗證屬性,作用在某個對象上面。如果這個對象出現驗證錯誤,這個Create方法,再次展示表單,如果沒有錯誤,就將數據保存到數據庫中。在我們的例子中,當客戶端驗證出現錯誤了,表單的數據是不會提交到服務器中的。這第二個Create方法是永遠不會被調用的。如果你禁止了瀏覽器的javascript,客戶端的驗證會失效,然后這個Post的方式的Create方法會調用ModelState.IsValid來檢查,是否Movie實體中有驗證不通過的。

11.下面顯示的代碼,是用來顯示驗證失敗,而顯示的錯誤消息的:

12.直接看代碼吧:

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Web;
 using System.Data.Entity;
 using System.ComponentModel.DataAnnotations;
 
 namespace MvcMovie.Models
 {
  public class Movie
  {
    public int ID { get; set; }
    [StringLength(60,MinimumLength=3,ErrorMessage="主題的長度必須在3到60個字符")]
     public string Title { get; set; }
 
     [Display(Name="Release Date")]
     [DataType(DataType.Date)]
     [DisplayFormat(DataFormatString="{0:yyyy-MM-dd}",ApplyFormatInEditMode=true)]
     public DateTime ReleaseDate { get; set; }
     [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
     [Required]
     [StringLength(30)]
     public string Genre { get; set; }
     [Range(1,100)]
     [DataType(DataType.Currency)]
     public decimal Price { get; set; }
 
     [RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
     public string Rating { get; set; }
 
 
   }
 
  public class MovieDBContext : DbContext
   {
     public DbSetMovie> Movies { get; set; }
   }
 }

13.

DataType屬性只是提示了視圖引擎來格式化數據。你可以使用RegularExpression屬性來驗證格式化的數據,DataType不是驗證屬性,它和數據庫差不多,只是指定了數據類型而已,DataType枚舉類型,提供了很多數據類型,例如:Date,Time,PhoneNumber,Currency,EmailAddress等等,DataType屬性同樣能夠保證程序可以創建一些特殊的類型,比如a mailto: link 能夠被用來創建 DataType.EmailAddress。。。DataType不提供任何的驗證。

DataType.Date 不能指定顯示怎樣的格式化時間。它是默認根據服務器中的時間來的。

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime EnrollmentDate { get; set; }

14.

當處于文本編輯模式的時候,ApplyFormatInEditMode屬性就會被應用。(你可能不想讓這種情況應用于貨幣類型的字段,因為你不想讓貨幣類型的處于文本編輯模式下) 
這個時候,你可以用DisplayFormat,但是一個更好的主意是:使用DataType,這個屬性提供了幾個好處。
瀏覽器支持HTML5特性
瀏覽器默認會在你的本地電腦上面,正確顯示數據

DataType屬性能夠保證MVC選擇正確的字段,顯示數據(DisplayFormat它是使用字符串模板),了解更多請看。。。。 
如果你使用了DataType屬性,你不得不指定DisplayFormat屬性,來確保能夠在谷歌瀏覽器上面,正確顯示數據
jQuery validation不支持Range,DateTime屬性,即使你指定了特定范圍,還是會報客戶端的驗證錯誤

看代碼:

[Range(typeof(DateTime), "1/1/1966", "1/1/2020")]

以上就是ASP.NET MVC5添加驗證的方法,希望對大家的學習有所幫助。

您可能感興趣的文章:
  • ASP.NET MVC5驗證系列之服務端驗證
  • ASP.NET MVC5驗證系列之Remote Validation
  • ASP.NET MVC 數據驗證及相關內容
  • ASP.NET MVC5驗證系列之客戶端驗證
  • ASP.NET全棧開發教程之在MVC中使用服務端驗證的方法

標簽:衢州 南寧 崇左 汕尾 贛州 平涼 洛陽 青海

巨人網絡通訊聲明:本文標題《ASP.NET MVC5添加驗證(4)》,本文關鍵詞  ASP.NET,MVC5,添加,驗證,ASP.NET,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC5添加驗證(4)》相關的同類信息!
  • 本頁收集關于ASP.NET MVC5添加驗證(4)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产麻豆欧美日韩一区| 日本成人在线电影网| 免播放器亚洲一区| 欧美丰满少妇xxxbbb| 美女视频免费一区| 亚洲一级不卡视频| 一级中文字幕一区二区| 日韩一区二区三区观看| 成人午夜碰碰视频| 极品少妇一区二区三区精品视频 | 日韩免费成人网| 欧美在线观看18| 91福利精品第一导航| 成人网在线免费视频| 欧美怡红院视频| 欧美中文字幕一区| 色婷婷精品久久二区二区蜜臂av| 国内一区二区视频| 国产suv精品一区二区6| 天天综合网天天综合色| 亚洲欧美日本在线| 久久av资源网| 国产专区欧美精品| 国产不卡免费视频| 国产精品亚洲人在线观看| 国产福利91精品一区二区三区| 粉嫩蜜臀av国产精品网站| 在线视频国内自拍亚洲视频| 久久久亚洲国产美女国产盗摄| 欧美一级电影网站| av不卡在线播放| 免费观看久久久4p| 国产一区二区三区在线看麻豆| 国产在线一区观看| 国产在线一区二区综合免费视频| 国产精品77777| 欧洲视频一区二区| 精品国产乱码久久久久久1区2区| 国产日韩v精品一区二区| 一区二区三区四区蜜桃| 激情国产一区二区| 欧美日韩亚洲综合在线| 欧美电影免费提供在线观看| 国产精品美女久久久久aⅴ| 激情综合色播激情啊| 欧美一区二区网站| 日韩电影在线观看电影| 成人国产精品免费| 欧美mv日韩mv国产网站| 亚洲在线视频一区| 欧美日韩国产首页在线观看| 亚洲激情六月丁香| 精品1区2区3区| 麻豆传媒一区二区三区| 欧美性大战久久| 亚洲国产精品久久人人爱蜜臀| proumb性欧美在线观看| 国产精品福利一区| 91国产丝袜在线播放| 一区二区三区四区亚洲| 欧美二区乱c少妇| 久久av中文字幕片| 久久九九影视网| 国产91在线观看丝袜| 免费久久99精品国产| 亚洲一级二级在线| 亚洲精品美腿丝袜| 日韩毛片一二三区| 国精产品一区一区三区mba视频| 亚洲h精品动漫在线观看| 日韩欧美一区二区不卡| 粉嫩欧美一区二区三区高清影视| 在线区一区二视频| 99久久国产综合色|国产精品| 亚洲午夜三级在线| 亚洲精品视频一区二区| 亚洲国产高清在线观看视频| 精品久久久久99| 91精品国产综合久久久久久久| 国产成人精品免费视频网站| 激情欧美一区二区三区在线观看| 亚洲精品免费在线播放| 亚洲欧美中日韩| 日本一区二区三区国色天香| 久久精品男人的天堂| 久久亚洲精品小早川怜子| 2024国产精品| 国产精品美女一区二区在线观看| 欧美日韩一本到| 日韩一区二区免费在线观看| 欧美成人猛片aaaaaaa| www.成人在线| 8x8x8国产精品| 亚洲啪啪综合av一区二区三区| 久久这里只精品最新地址| 国产情人综合久久777777| 国产精品视频观看| 亚洲欧美精品午睡沙发| 亚洲成人一区二区在线观看| 日本不卡1234视频| av高清不卡在线| 国产精品久久久久久久岛一牛影视| 91视频观看视频| 三级欧美韩日大片在线看| 国产日韩影视精品| 欧美熟乱第一页| 成人黄色电影在线| 一区二区三区精品久久久| 亚洲一二三级电影| 欧美曰成人黄网| 丝袜美腿亚洲色图| 成人性色生活片| 17c精品麻豆一区二区免费| 国产专区欧美精品| 日本女优在线视频一区二区| 亚洲一级电影视频| 国产91清纯白嫩初高中在线观看 | 亚洲午夜精品久久久久久久久| 日本韩国欧美国产| 一区二区三区在线免费视频 | 午夜精品久久久久久久久| 欧美亚洲愉拍一区二区| 精品一区二区三区av| 国产精品系列在线| 一区二区三区欧美久久| 日本一区中文字幕| 亚洲一区二区三区爽爽爽爽爽| 亚洲精品国产第一综合99久久 | 精品亚洲aⅴ乱码一区二区三区| 一本久久a久久精品亚洲 | 欧美性猛交xxxx黑人交| 国产精品污www在线观看| 国产成人免费av在线| 久久这里只有精品视频网| 久久99精品久久久久久久久久久久| 欧美色图在线观看| 日本亚洲视频在线| 欧美sm极限捆绑bd| 国产自产高清不卡| 自拍偷拍国产精品| 欧美视频一区二区| 国产一区二区三区综合| 国产欧美一区二区精品秋霞影院| 国产精品996| 亚欧色一区w666天堂| 日韩久久久精品| 大美女一区二区三区| 亚洲欧美日韩国产中文在线| 欧美欧美午夜aⅴ在线观看| 精品一区二区三区在线播放视频| 日本一区二区不卡视频| 91精品国产综合久久香蕉麻豆| 狠狠久久亚洲欧美| 日韩经典中文字幕一区| 国产蜜臀av在线一区二区三区| 在线国产电影不卡| 成人动漫在线一区| 麻豆国产欧美日韩综合精品二区| 亚洲欧美一区二区三区极速播放| 91黄色免费网站| 91麻豆成人久久精品二区三区| 日韩av电影免费观看高清完整版在线观看 | 日韩不卡手机在线v区| 国产精品久久777777| 日韩精品影音先锋| 欧美白人最猛性xxxxx69交| 6080午夜不卡| 欧美一二三在线| 日韩欧美精品在线视频| 欧美一卡2卡3卡4卡| 欧美日韩国产首页在线观看| 欧美日韩国产影片| 欧美日产在线观看| 欧美日韩精品高清| 91精品国产黑色紧身裤美女| 欧美人妖巨大在线| 欧美午夜视频网站| 日韩高清国产一区在线| 国产精品人成在线观看免费| 国内外成人在线| 亚洲视频一区二区在线| 欧美日韩一区在线| 成人av片在线观看| 一区二区三区小说| 国产网站一区二区| 欧美亚洲综合色| 精品国产免费久久| 国产一区欧美一区| 石原莉奈在线亚洲三区| 91.xcao| 成人av资源在线观看| 91影视在线播放| 亚洲视频资源在线| 欧美在线不卡视频| 日日摸夜夜添夜夜添国产精品| 亚洲视频在线一区二区| 亚洲欧美一区二区在线观看| 欧美精品丝袜中出| 欧美一区二区视频网站| 欧美成人免费网站|