亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍

ASP.NET MVC 5 - 給數據模型添加校驗器
來源:易賢網 閱讀:1574 次 日期:2014-08-28 13:33:22
溫馨提示:易賢網小編為您整理了“ASP.NET MVC 5 - 給數據模型添加校驗器”,方便廣大網友查閱!

在本節中將會給Movie模型添加驗證邏輯。并且確保這些驗證規則在用戶創建或編輯電影時被執行。

拒絕重復 DRY

ASP.NET MVC 的核心設計信條之一是DRY: "不要重復自己(DRY --Don’t Repeat Yourself)"。ASP.NET MVC鼓勵您指定功能或者行為,只做一次,然后將它應用到應用程序的各個地方。這可以減少您需要編寫的代碼量,并減少代碼出錯率,易于代碼維護。

給ASP.NET MVC 和 Entity Framework Code First 提供驗證支持是 DRY 信條的一次偉大實踐。您可以在一個地方 (模型類) 中以聲明的方式指定驗證規則,這個規則會在應用程序中的任何地方執行。

讓我們看看您如何在本電影應用程序中,使用此驗證支持。

給電影模型添加驗證規則

您將首先向Movie類添加一些驗證邏輯。

打開Movie.cs 文件,注意到System.Web 命名空間并未包含System.ComponentModel.DataAnnotations. DataAnnotations提供了一組內置的嚴重屬性,可供您應用于類、屬性。(DataAnnotations也包含一個DataType屬性,來幫助格式化的辦法來校驗)

更新Movie類,以利用內置的Required、 StringLength, RegularExpression和Range驗證屬性。以下面的代碼為例,以應用驗證屬性。

public class Movie

{

public int ID { get; set; }

[StringLength(60, MinimumLength = 3)]

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]*$")]

[StringLength(5)]

public string Rating { get; set; }

}

在StringLength屬性設置字符串的最大長度,它會在數據庫上設置此限制,因此的數據庫schema將發生變化。右鍵單擊電影表, 在服務器資源管理器(Server explorer),然后單擊打開表定義(Open Table Definition):

clip_image002

在上面的圖片中,你可以看到所有的字符串字段被設置為了NVARCHAR (MAX)數據類型. 我們將使用遷移來更新架構。生成解決方案,然后打開軟件包管理器控制臺(the Package Manager Console ),輸入如下命令:

add-migration DataAnnotations

update-database

當這個命令完成后,Visual Studio將打開類代碼文件,它定義了新DbMIgration派生類(DataAnnotations),你可以在Up方法看到更新架構約束代碼如下所示:

public override void Up()

{

AlterColumn("dbo.Movies", "Title", c => c.String(maxLength: 60));

AlterColumn("dbo.Movies", "Genre", c => c.String(nullable: false, maxLength: 30));

AlterColumn("dbo.Movies", "Rating", c => c.String(maxLength: 5));

}

該流派(Genre)字段不再可為Null(也就是說,你必須輸入一個值)。該評級(Rating)字段最大長度為5, 標題的最大長度為60。標題(Title )和價格 (Price)的范圍的最小長度并沒有更改。

請在數據庫中,檢查電影表的schema:

clip_image004

該字符串字段顯示新的長度限制和流派字段(Genre)不能再為空。

驗證屬性指明您想要應用到模型屬性的行為。Required 和MinimumLength屬性指出某一屬性不可為空,但沒有什么能夠阻止用戶輸入空格來驗證。該RegularExpression屬性是用來限制哪些字符可以輸入。在上面的代碼中,流派(Genre)和等級(Rating)只能使用字母(空格,數字和特殊字符是不允許的)。該范圍(Range )屬性約束的值在一個指定范圍內。在StringLength 屬性允許您設置一個字符串屬性的最大長度,以及最小長度(可選的)。值類型(decimal, int, float, DateTime)有固有必需設置的,不需要的Required屬性。

Code First確保你的模型在指定class上在驗證規則強制執行之前應用程序將變更儲存在數據庫中。例如,下面的代碼將拋出一個DbEntityValidationException 異常時,調用SaveChanges方法時,因為幾個必要的Movie屬性缺少:

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

上面的代碼會拋出以下異常:

Validation failed for one or more entities. 參閱 'EntityValidationErrors' 屬性獲得更多信息.

具有通過.NET Framework會自動強制執行的驗證規則, 有助于使你的應用程序更加健壯。它還確保可以不會忘記驗證的東西,即在不經意間不會讓壞的數據寫入數據庫。

ASP.NET MVC 的驗證錯誤UI

重新運行應用程序,瀏覽 /Movies的 URL。

單擊Create New鏈接,來添加一部新電影。在窗體中填寫一些無效值,然后單擊Create按鈕。

如同jQuery的客戶端驗證來檢測到錯誤時,它會顯示一個錯誤消息。

注意,為了使jQuery支持使用逗號的非英語區域的驗證 ,需要設置逗號(",")來表示小數點,如本教程前面所述, 你須引入NuGet globalize。請注意,表單在每一個相應的驗證錯誤消息旁邊,已經自動使用紅色邊框的顏色突出顯示文本框指明無效數據。這些錯誤是強制執行了客戶端端(使用JavaScript和jQuery)和服務器端(如果用戶禁用了JavaScript)。

一個真正的好處是,你并不需要更改MoviesController類或Create.cshtml視圖中的一行代碼,來啟用此驗證的用戶界面。您在前面教程所創建的控制器和視圖會自動啟用,使用驗證指明的Movie model類的屬性。使用Edit行為方法,同樣的驗證方法也完全適用。直到沒有任何客戶端驗證錯誤的表單數據,才會被發送回服務器。您可以通過在HTTP POST方法,用一個斷點來驗證這一點; 或通過使用fiddler tool,或者IE瀏覽器F12 developer tools。

如何驗證創建視圖和創建方法

您可能很想知道驗證用戶界面在沒有更新控制器或視圖代碼的情況下是如何生成的。下面列出了MovieController類中的Create方法。它們是之前教程中自動生成的,并沒有修改。

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);

}

第一種(HTTP GET)Create 方法用來顯示初始的創建form。第二個 ([HttpPost]) 方法處理form的請求。第二種Create方法 (HttpPost 版本) 調用 ModelState.IsValid來檢查是否有任何的Movie驗證錯誤。調用此方法將驗證對象上所有應用了驗證約束的屬性。如果對象含有驗證錯誤,則Create方法會重新顯示初始的form。如果沒有任何錯誤,方法將保存信息到數據庫。在我們的電影示例中,我們使用了驗證,當客戶端檢測到錯誤時,form不會被post到服務器;所以第二個Create方法永遠不會被調用。如果您在瀏覽器中禁用了 JavaScript,客戶端驗證也會被禁用,HTTP POST Create方法會調用 ModelState.IsValid來檢查影片是否含有任何驗證錯誤。

您可以在HttpPost Create方法中設置一個斷點,當客戶端驗證檢測到錯誤時,不會post form數據,所以永遠不會調用該方法。如果您在瀏覽器中禁用 JavaScript,然后提交具有錯誤信息的form,斷點將會命中。您仍然得到充分的驗證,即使在沒有 JavaScript的情況下。

下圖顯示了如何禁用 Internet Explorer 中的 JavaScript。

clip_image008

clip_image010

下圖顯示了如何在火狐瀏覽器中禁用 JavaScript。

clip_image012

下圖顯示了如何在 Chrome 瀏覽器中禁用 JavaScript。

clip_image014

下面是框架代碼在之前的教程中生成的Create.cshtml視圖模板。它用來為以上兩個操作方法來顯示初始的form,同時在驗證出錯時來重新顯示視圖。

@model MvcMovie.Models.Movie

@{

ViewBag.Title = "Create";

}

<h2>Create</h2>

@using (Html.BeginForm())

{

@Html.AntiForgeryToken()

<div class="form-horizontal">

<h4>Movie</h4>

<hr />

@Html.ValidationSummary(true)

<div class="form-group">

@Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" })

<div class="col-md-10">

@Html.EditorFor(model => model.Title)

@Html.ValidationMessageFor(model => model.Title)

</div>

</div>

@*Fields removed for brevity.*@

<div class="form-group">

<div class="col-md-offset-2 col-md-10">

<input type="submit" value="Create" class="btn btn-default" />

</div>

</div>

</div>

}

<div>

@Html.ActionLink("Back to List", "Index")

</div>

@section Scripts {

@Scripts.Render("~/bundles/jqueryval")

}

請注意,代碼如何使用Html.EditorFor helper 輸出為Movie中的每個屬性的<input>元素。此Helper旁邊是對Html.ValidationMessageFor方法的調用。這兩個Helper方法將處理由控制器傳遞到視圖的模型對象(在這里是,Movie對象)。它們會自動查找模型中指定的驗證屬性,并顯示適當的錯誤消息。

如果您想要在后面更改驗證邏輯,您可以做在一個地方,將驗證信息添加到模型上。 (此示例中,是movie 類)。您不必擔心不符合規則 ,驗證邏輯會在應用程序的不同部分執行——在一個地方定義驗證邏輯將會被使用到各個地方。這使代碼非常干凈,并使它易于維護和擴展。它意味著您會完全遵守DRY原則。

使用DataType屬性

打開Movie.cs文件并檢查Movie類。在System.ComponentModel.DataAnnotations命名空間提供的格式化(formatting)屬性,除了內置的一套驗證的屬性。我們已經應用了的DataType枚舉值的ReleaseDate和Price 字段。下面的代碼顯示了ReleaseDate和Price 用適當的的DataType屬性。

[DataType(DataType.Date)]

public DateTime ReleaseDate { get; set; }

[DataType(DataType.Currency)]

public decimal Price { get; set; }

該DataType屬性只提供提示的視圖引擎對數據進行格式化(與相應的屬性,如<a>取代的URL及 <a href="mailto:EmailAddress.com">取代電子郵件。您可以使用RegularExpression的屬性來驗證數據格式。DataType屬性用于指定一個比數據庫內部類型更加具體的一種數據類型,但它們不是驗證屬性。在這種情況下,我們只需要保留的日期跟蹤,而不是日期和時間。該枚舉的DataType提供了多種數據類型,如Date, Time, PhoneNumber, Currency, EmailAddress 和其他更多的。該的DataType 的屬性也可以使應用程序來自動提供特定類型的功能。例如,一個mailto:鏈接可以DataType.EmailAddress創建和日期選擇器可以在支持HTML5的瀏覽器提供的DataType.Date。該數據類型屬性發出的HTML5data-(發音讀數據破折號)屬性與HTML5的瀏覽器可以理解。 該DataType 屬性不提供任何驗證。

DataType.Date并未指定顯示的日期格式。默認情況下,根據基于服務器的的CultureInfo預設格式顯示數據字段。

該DisplayFormat的屬性是用來顯式地指定日期格式的:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

public DateTime EnrollmentDate { get; set; }

該ApplyFormatInEditMode設置指定了當值進行編輯顯示在一個文本框中,格式化亦應適用。 (您可能不希望這樣的某些字段 - 例如貨幣值,你可能不希望在編輯文本框中出現貨幣符號。)

你可以單獨使用DisplayFormat屬性;但和DataType屬性一起,通常是一個好主意。該DataType 屬性傳遞數據的語義,而不是如何呈現它在屏幕上,并具有以下的優點,不帶DisplayFormat的:

· 瀏覽器可以使HTML5的功能(例如顯示一個日歷控件,在區域設置相應的貨幣符號,電子郵件中的鏈接,等等)。

· 默認情況下,瀏覽器就會使用基于語言環境(locale)的正確格式呈現數據。

· 在的DataType屬性可以使MVC選擇合適的字段模板以呈現數據(如果本身所使用的的DisplayFormat使用字符串模板)。欲了解更多信息,請參閱see Brad Wilson's的ASP.NET MVC 2 Templates。 (雖然寫的MVC2,本文仍然適用于ASP.NET MVC 5的當前版本。)

如果你使用了的DataType的屬性具有一個日期字段,你也必須指明,以確保字段正確地呈現Chrome瀏覽器中的DisplayFormat屬性。欲了解更多信息,請參閱this StackOverflow thread。

注:jQuery的驗證不與Range屬性和DateTime的同時工作。例如,下面的代碼總是顯示一個客戶端驗證錯誤,即使當日期是在指定的范圍內:

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

你可能會禁用jQuery的日期校驗,而使用帶有的Range屬性DateTime。這通常不是一個好的做法,在你的模型里,編譯器很難確定日期,所以使用Range屬性和DateTime效果不好。

下面的代碼顯示在同一行合并屬性:

public class Movie

{

public int ID { get; set; }

[Required,StringLength(60, MinimumLength = 3)]

public string Title { get; set; }

[Display(Name = "Release Date"),DataType(DataType.Date)]

public DateTime ReleaseDate { get; set; }

[Required]

public string Genre { get; set; }

[Range(1, 100),DataType(DataType.Currency)]

public decimal Price { get; set; }

[Required,StringLength(5)]

public string Rating { get; set; }

}

在教程的下一部分,我們先會看看代碼,然后再改進一下自動生成的Details 和 Delete 方法。

更多信息請查看IT技術專欄

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

亚洲免费不卡_在线视频精品_国产尤物精品_久久久久网址_久久精品91_欧美va天堂在线_狠狠入ady亚洲精品_亚洲午夜精品福利_国产精品草草_午夜精品久久99蜜桃的功能介绍
久久精品欧美| 欧美大片一区| 亚洲视频高清| 很黄很黄激情成人| 亚洲福利国产| 亚洲一区二区成人| 欧美喷水视频| 精品不卡视频| 国产精品日韩高清| 亚洲网站啪啪| 亚洲欧美卡通另类91av| 午夜精品久久| 99国产精品久久久久久久| 久久久久网址| 亚洲国产激情| 美女日韩在线中文字幕| 欧美天堂亚洲电影院在线观看| 在线综合亚洲| 激情视频一区二区| 国产精品一区免费观看| 国语精品一区| 亚洲一区二区在线看| 久久黄色影院| 亚洲人体大胆视频| 国产精品sss| 亚洲欧美不卡| 国产欧美日韩在线播放| 欧美视频二区| 久久裸体视频| 性久久久久久| 日韩视频久久| 欧美日韩精品不卡| 久久av一区二区三区| 亚洲激情午夜| 伊人成人在线视频| 国产精品mv在线观看| 久久久久天天天天| 香蕉久久夜色精品国产| 亚洲欧洲日本一区二区三区| 一区在线电影| 亚洲黄色av| 亚洲黄网站黄| 在线亚洲观看| 亚洲在线国产日韩欧美| 国产免费成人| 国产精品三区www17con| 国产情侣久久| 亚洲欧美日韩国产一区| 国产一区二区三区的电影| 亚洲欧洲一区二区在线观看| 亚洲精品偷拍| 国产日韩精品一区观看| 国产精品久久久一区二区三区 | 国产一区二区高清| 亚洲精品视频啊美女在线直播| 精品成人免费| 99精品99久久久久久宅男| 国产亚洲精品自拍| 久久婷婷国产综合尤物精品| 欧美另类亚洲| 亚洲免费播放| 久久一区二区三区四区五区| 欧美韩国一区| 精品不卡在线| 国产欧美日韩一区二区三区在线| 亚洲专区一区| 欧美在线三区| 久久久国产精品一区二区中文 | 激情婷婷欧美| aa日韩免费精品视频一| 久久xxxx| 伊人久久成人| 鲁大师影院一区二区三区| 欧美激情亚洲| 一区二区三区四区五区在线| 久久av一区二区三区| 欧美午夜一区| 亚洲中字黄色| 亚洲图色在线| 香蕉亚洲视频| 亚洲人成毛片在线播放女女| 久久精品二区三区| 在线播放精品| 久久一区视频| 国产人成精品一区二区三| 欧美成人dvd在线视频| 亚洲黄色毛片| 国产精品国产精品| 每日更新成人在线视频| 亚洲巨乳在线| 欧美性色综合| 久久成人在线| 国产亚洲一级| 日韩午夜电影| 在线欧美福利| 欧美午夜欧美| 欧美大香线蕉线伊人久久国产精品| 亚洲精品护士| 精品电影一区| 国产精品v欧美精品v日韩精品| 欧美中文字幕| 先锋亚洲精品| 先锋影音国产一区| 国产三区二区一区久久| 亚洲美女毛片| 在线精品观看| 在线观看一区视频| 精品动漫3d一区二区三区免费版| 欧美黄免费看| 久久在线精品| 久久综合精品一区| 久久久久高清| 欧美a级片网站| 欧美人成在线| 欧美阿v一级看视频| 狂野欧美性猛交xxxx巴西| 久久精品电影| 欧美精品国产一区二区| 欧美片第1页综合| 欧美日韩中文| 国产中文一区二区| 精品9999| 在线视频精品| 久久久久久夜| 欧美视频日韩| 亚洲高清久久| 国产精品五区| 亚洲欧美清纯在线制服| 久久精品日产第一区二区 | 99精品国产福利在线观看免费| 亚洲高清激情| 国产欧美日韩综合精品二区| 亚洲综合好骚| 午夜亚洲福利| 亚洲国内精品| 国产毛片久久| 国产精品www.| 国产欧美日韩一区| 久久亚洲风情| 在线日本成人| 久久久福利视频| 激情丁香综合| 另类av一区二区| 欧美日韩成人一区二区三区| 亚洲福利一区| 久久亚洲电影| 99国产精品99久久久久久粉嫩| 亚洲欧美久久久| 黄色av成人| 久久激情一区| 亚洲高清视频在线观看| 久久国产精品久久w女人spa| 国内久久精品| 免费视频一区| 在线日韩视频| 午夜精品亚洲一区二区三区嫩草| 亚洲精品日韩久久| 欧美日韩成人| 性娇小13――14欧美| 在线免费观看欧美| 午夜亚洲福利| 美女尤物久久精品| 91久久精品一区二区别| 欧美一区久久| 亚洲在线播放| 国产欧美亚洲一区| 激情综合电影网| 欧美成人国产| 久久经典综合| 美女黄网久久| 欧美中文字幕| 中文亚洲免费| 亚洲国内精品| 亚洲国产精品一区| 激情另类综合| 黑人一区二区| 欧美精选一区| 欧美精品亚洲| 欧美精品九九| 久久免费高清| 久久蜜桃资源一区二区老牛| 性色一区二区三区| 国产欧美韩日| 99xxxx成人网| 一区二区国产精品| 国产偷自视频区视频一区二区| 91久久国产自产拍夜夜嗨| 韩国一区二区三区在线观看 | 欧美区国产区| 欧美日本久久| 欧美日本不卡高清| 欧美在线亚洲| 国产精品激情电影| 国产综合第一页| 激情综合久久| 亚洲人www| 国产视频一区在线观看一区免费| 国产日韩欧美亚洲一区| 国产女主播一区二区三区| 亚洲一区日韩在线| 久久综合中文| 国产主播精品| 亚洲乱码视频| 亚洲一区亚洲| 午夜久久黄色| 日韩天堂av| 久久不射网站| 狠狠色丁香久久综合频道| 亚洲国产精品一区在线观看不卡 | 欧美粗暴jizz性欧美20| 午夜视频久久久| 在线观看日韩av电影| 日韩香蕉视频| 免费日韩精品中文字幕视频在线| 久久久精品五月天| 狠狠综合久久av一区二区老牛| 精品成人国产| 国产九区一区在线| 国产一区二区中文字幕免费看| 亚洲美女黄色| 欧美一区成人| 亚洲精品123区| 蜜桃av综合| 精品不卡在线| 午夜一区不卡| 在线观看日韩av电影| 香蕉久久国产| 亚洲欧洲一区二区天堂久久| 免费久久久一本精品久久区| 黄色在线成人| 久久久999| 99视频一区| 国自产拍偷拍福利精品免费一 | 在线观看成人av| 亚洲一区二区三区在线观看视频| 午夜精品影院| 国产农村妇女精品一二区 | 黄色国产精品一区二区三区| 国产一区二区三区久久| 国内精品久久久久国产盗摄免费观看完整版 | 亚洲欧美一区在线| 国产欧美午夜| 在线成人黄色| 欧美黄色一区| 午夜影院日韩| 国产精品毛片| 亚洲麻豆av| 亚洲黄色成人| 在线播放精品| 在线观看成人一级片| 欧美福利专区| 久久在线91| 亚洲欧美电影在线观看| 国产日韩一区| 国产精品美女| 亚洲一区二区三区精品动漫| 亚洲成人直播| 在线观看日韩av电影| 国产精品99一区二区| 欧美精品一区三区在线观看| 欧美成人一品| 久久中文字幕一区二区三区| 久久国产免费| 久久一本综合频道| 欧美一区二区三区久久精品茉莉花| 国产精品夜夜夜| 午夜在线视频观看日韩17c| 国产日韩专区| 国产精品丝袜xxxxxxx| 国产九区一区在线| 免费日韩av片| 久久精品导航| 欧美日韩99| 亚洲黄色大片| 国产精品乱码一区二区三区| 久久riav二区三区| 欧美黄在线观看| 国产精品第十页| 亚洲三级国产| 久久成人免费| 国内一区二区三区| 99热这里只有精品8| 国产精品一区二区在线观看| 久久激情综合| 亚洲私人影院| 国产一区成人| 欧美/亚洲一区| 亚洲天堂成人| 国产精品入口| 欧美日韩免费观看一区=区三区| 国产综合婷婷| 国产视频一区在线观看一区免费| 午夜影院日韩| 欧美日本一区二区高清播放视频| 一区在线电影| 午夜综合激情| 极品av少妇一区二区| 国产一区成人| 韩日午夜在线资源一区二区| 国产精品普通话对白| 欧美fxxxxxx另类| 一本色道久久综合| 欧美日韩成人| 先锋亚洲精品| 精品动漫av| 欧美一区二区三区在线播放| 在线欧美一区| 欧美大片一区| 国产精品亚洲综合久久| 国内精品亚洲| 久久综合中文色婷婷| 亚洲精品1区| 欧美日韩国产三区| 国产精品久久一区二区三区| 欧美特黄一区| 亚洲欧美日本视频在线观看| 欧美午夜视频在线| 久久久久久网| 亚洲精品孕妇| 欧美日韩精品一区| 免费日韩视频| 国产精品乱看| aa成人免费视频| 国产主播精品| 欧美大香线蕉线伊人久久国产精品| 亚洲每日在线| 国产精品av久久久久久麻豆网| 欧美一级久久| 国产精品一区二区欧美| 99精品免费| 亚洲国产精品一区在线观看不卡 | 亚洲麻豆视频| 亚洲一级网站| 国产精品vip| 女人天堂亚洲aⅴ在线观看| 久久av一区| 西西裸体人体做爰大胆久久久| 一区二区三区精品国产| 亚洲毛片视频| 一本不卡影院| 一区二区三区国产在线| 99亚洲精品| 国产日韩一区二区三区在线| 在线综合亚洲| 午夜一区二区三视频在线观看| 亚洲一区二区毛片| 亚洲欧美久久久| 久久国产日韩欧美| 欧美一区二区三区另类| 欧美另类亚洲| 欧美午夜影院| 亚洲精品123区| 在线亚洲精品| 久久国产精品久久精品国产| 久久综合伊人77777麻豆| 欧美精品激情| 激情久久中文字幕| 99国产精品私拍| 亚洲综合三区| 欧美精品观看| 亚洲精品国产精品国自产观看| 99精品视频免费| 亚洲一区日本| 欧美体内she精视频在线观看| 亚洲国产网站| 免费在线一区二区| 国产精品videossex久久发布| 亚洲黄色成人久久久| 亚洲一区成人| 国产一区二区三区无遮挡| 亚洲国产婷婷| 免费亚洲视频| 在线精品观看| 久久久久久一区二区| 亚洲电影成人| 久久久蜜桃一区二区人| 亚洲国产综合在线看不卡| 国产美女一区| 激情欧美亚洲| 久久亚洲二区| 国产日韩欧美三区| 狠狠干成人综合网| 美女精品国产| 亚洲精品在线视频观看| 久久精品国产第一区二区三区最新章节 | 韩国久久久久| 亚洲综合首页| 亚洲黑丝一区二区| 欧美在线播放| 亚洲一区二区在线免费观看| 好吊色欧美一区二区三区视频| 亚洲一区二区网站| 91久久夜色精品国产九色| 欧美在线视频二区| 国产精品一区视频| 亚洲精品日韩久久| 欧美激情亚洲| 久久久久久国产精品mv| 亚洲深夜福利| 最新国产乱人伦偷精品免费网站|