国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

ASP.NET MVC實(shí)例:使用Northwind和Entity框架

開發(fā) 后端
本文介紹了使用Northwind和Entity框架的ASP.NET MVC實(shí)例。

作為asp.net 3.5 Extensions預(yù)覽版組成部分的微軟asp.net mvc框架發(fā)布了CTP版本。自此,mvc框架就吸引了眾多業(yè)界人士的眼球,并紛紛在博客以及各個(gè)開發(fā)者所關(guān)注的網(wǎng)站上進(jìn)行了介紹。

微軟CLR和.NET框架團(tuán)隊(duì)的成員Brad Abrams發(fā)布了一個(gè)非常優(yōu)秀的實(shí)例,為開發(fā)者展示了如何有效地使用微軟mvc框架中的某些最新工具。該實(shí)例源于Scott Guthrie的mvc實(shí)例,Scott將這些內(nèi)容放在他的博客上,演示了在最初形式下的mvc框架是如何進(jìn)行工作的。Scott的實(shí)例采用循序漸進(jìn)的方式將其編寫為四部分內(nèi)容:

asp.net mvc框架(第1部分)

asp.net mvc框架(第2部分):URL路徑選擇

asp.net mvc框架(第3部分):從控制器將ViewData傳遞到視圖

asp.net mvc框架(第4部分):處理表單編輯和提交場(chǎng)景

mvc框架為開發(fā)者提供了足夠的靈活性去選擇視圖與模型引擎以滿足他們的需要。在Scott的示例中,他使用了LINQ to SQL模型,但Brad決定使用Entity框架,并以Northwind數(shù)據(jù)庫作為數(shù)據(jù)源。

開發(fā)者可以選擇多種不同的模型提供者,例如:

NHibernate

LINQ to SQL

Entity框架

在將來,我們或許還可以看到其他的模型提供者:

SubSonic

LLBLGen Pro

LightSpeed

或者其他為人所知的

Brad的方法是創(chuàng)建一個(gè)實(shí)例,引導(dǎo)開發(fā)者如何使用asp.net mvc Application and Test創(chuàng)建項(xiàng)目。開發(fā)者需要安裝下列內(nèi)容:

VS2008

asp.net 3.5 Extensions

ADO.NET Entity Framework Tools Dec 07 Preview

Northwind sample database (Northwind.mdf)

ASP.NET MVC實(shí)例指南

該指南內(nèi)容廣泛,有很高的學(xué)習(xí)價(jià)值,從中可以獲知mvc框架的功能以及如何將它們聯(lián)系在一起。使用mvc不同于以往所開發(fā)的Web Forms應(yīng)用程序,甚至對(duì)于經(jīng)驗(yàn)豐富的asp.net Web Form開發(fā)人員來說,也需要逐漸地習(xí)慣它。

入門

一旦asp.net 3.5 Extensions安裝完畢,就有幾種項(xiàng)目類型可供選擇,其中包括asp.net mvc Web Application以及asp.net mvc Web Application and Test。asp.net mvc被設(shè)計(jì)為易于測(cè)試的框架,而Brad也使用了測(cè)試功能。

File/新建項(xiàng)目 - 選擇asp.net mvc Web Application and Test

 File/新建項(xiàng)目 - 選擇asp.net mvc Web Application and Test

它會(huì)創(chuàng)建一個(gè)單獨(dú)的解決方案,包括一個(gè)Web應(yīng)用程序項(xiàng)目,并且,該項(xiàng)目可以用做單元測(cè)試。它們都是預(yù)先生成的,包含了你需要?jiǎng)?chuàng)建的一些基礎(chǔ)內(nèi)容。

ASP.NET MVC實(shí)例:創(chuàng)建Routes

mvc框架中的Routing(路徑選擇)是設(shè)計(jì)中非常值得關(guān)注的一項(xiàng)功能。開發(fā)人員可以通過它判斷應(yīng)用程序如何查找頁面。在經(jīng)典的asp.net應(yīng)用程序中,一個(gè)頁面例如home.aspx,總會(huì)有一個(gè)非常清晰的路徑可以訪問該頁面,通常形如www.mywebsite.com/home.aspx。與此比較,Routing為開發(fā)者提供了更多的靈活性。

asp.net mvc提供的其中一個(gè)非常強(qiáng)大的新特性是它能夠定制訪問應(yīng)用程序的URLs。顯然,對(duì)于磁盤上的物理文件和用來訪問頁面功能的URL而言,URL路徑選擇特性隔離了兩者之間的關(guān)聯(lián)關(guān)系。這對(duì)于搜索引擎的優(yōu)化以及提高網(wǎng)站的通用性都是非常重要的。例如,現(xiàn)在我們不需要訪問這樣的地址http://localhost/Products/ItemDetails.aspx?item=42,而是通過http://localhost/Products/CodFishOil進(jìn)行訪問,這樣的URL更讓人賞心悅目。

它的實(shí)現(xiàn)是在mvc應(yīng)用程序的global.asax文件中創(chuàng)建一個(gè)路徑表。值得慶幸的是,模板中的默認(rèn)內(nèi)容對(duì)于應(yīng)用程序而言已經(jīng)足夠了。

  1. RouteTable.Routes.Add(new Route  
  2.  
  3. {      
  4.  
  5. Url = "[controller]/[action]/[id]",      
  6.  
  7. Defaults = new { action = "Index", id = (string)null },     
  8.  
  9.  RouteHandler = typeof(mvcRouteHandler)});  
  10.  

這段代碼給出了我們針對(duì)自己的站點(diǎn)所需要的URLs格式。特別的,格式為

http://localhost/Products/Details/CodFishOil

的URL應(yīng)該轉(zhuǎn)換為ProductsController類(注意,我們?yōu)轭惷砑恿恕癈ontroller”后綴,使得這些類能夠區(qū)別于設(shè)計(jì)中的模型對(duì)象)。接著,Action是Details類的方法,最后,傳遞給details方法的參數(shù)為CodFishOil。

當(dāng)然,還可能有其它的格式,只需要在URL格式的字符串中修改正則表達(dá)式即可。

ASP.NET MVC實(shí)例:創(chuàng)建模型(Model)

模型是大多數(shù)web應(yīng)用程序的心臟,幾乎所有的數(shù)據(jù)都存儲(chǔ)在模型之中。mvc框架允許開發(fā)者幾乎沒有限制地使用任意一種數(shù)據(jù)源,并能夠輕松地在各種數(shù)據(jù)源之間進(jìn)行切換。

模型表示你將要在應(yīng)用程序中使用的數(shù)據(jù)。在本例中,從模型開始應(yīng)用程序的核心開發(fā)是一個(gè)不錯(cuò)的選擇。

將Northwind.mdf文件復(fù)制到mvcApplication的App_Data文件夾中。對(duì)于SqlServer而言,Northwind可能是最常用的示例數(shù)據(jù)庫了。你可以從官方地址 中下載它,如果您只需要原始文件的話也可以從這里獲取 。

 如果您只需要原始文件的話也可以從這里獲取

接下來,我們需要基于northwind數(shù)據(jù)庫創(chuàng)建LINQ模型,以便于進(jìn)行操作。你可以使用NHibernate 、LinqToSql 、Entity框架 ,或者其它的.NET ORM技術(shù)。只要它的返回結(jié)果為.NET對(duì)象,asp.net mvc框架就能夠?qū)ζ溥M(jìn)行操作。在本例中,我使用了Entity框架。

右鍵單擊Models目錄,選擇add new item

右鍵單擊Models目錄,選擇add new item 

在對(duì)話框中,選擇ADO.NET Entity Data Model。

在向?qū)е校x擇“Generate from Database”,然后賦予默認(rèn)的“Northwnd”連接字符串。

對(duì)于演示而言,我們只需要使用Categories、Products和Supplier數(shù)據(jù)表,當(dāng)然,你也可以擴(kuò)展該演示以引入更多豐富的特性集。但是目前除了這三者之外,不要選擇數(shù)據(jù)庫視圖、存儲(chǔ)過程和其他的數(shù)據(jù)表。

 當(dāng)你單擊完成時(shí),VS會(huì)創(chuàng)建一組.NET類

當(dāng)你單擊完成時(shí),VS會(huì)創(chuàng)建一組.NET類,這些類定制創(chuàng)建了訪問數(shù)據(jù)庫的相關(guān)內(nèi)容。我們還能夠獲得一個(gè)界面友好的設(shè)計(jì)器,以可視化方式展現(xiàn)數(shù)據(jù)之間的關(guān)系。

 一個(gè)界面友好的設(shè)計(jì)器,以可視化方式展現(xiàn)數(shù)據(jù)之間的關(guān)系

注意,賦予這些類的默認(rèn)名仍然沿用了數(shù)據(jù)庫的復(fù)數(shù)名詞,但是在我們的OR映射中,它們表達(dá)的是單個(gè)的實(shí)例。為了使得代碼具有可讀性,應(yīng)該將所有的表名修改為準(zhǔn)確的單數(shù)名詞:Category、Product和Supplier。至于Product的Navigation屬性,也需要修改為單數(shù)形式,因?yàn)閷?duì)于產(chǎn)品而言,只有一個(gè)類別(Category)和供應(yīng)商(Suppler)。

 右擊設(shè)計(jì)視圖,設(shè)置相關(guān)的屬性

接下來,我們需要修改命名空間使得代碼更加準(zhǔn)確直觀……右擊設(shè)計(jì)視圖,設(shè)置相關(guān)的屬性,例如將namespace設(shè)置為“NorthwindModels”,將Entity Container的名稱設(shè)置為“NorthWindEntities”

將Entity Container的名稱設(shè)置為“NorthWindEntities”  

雖然我們沒有給出模型的完整示例,但給出的內(nèi)容已經(jīng)足以指導(dǎo)開發(fā)者完成剩余的內(nèi)容……讓我們跳轉(zhuǎn)到下一個(gè)話題,來看一看控制器。

ASP.NET MVC實(shí)例:創(chuàng)建控制器

控制器是我們應(yīng)用程序的大腦。我們可以將控制器想象為機(jī)場(chǎng)的空中交通控制器,指揮飛機(jī)的進(jìn)出方向。一方面,控制器負(fù)責(zé)獲取數(shù)據(jù),另一方面,它則負(fù)責(zé)將數(shù)據(jù)傳遞到視圖。

右擊Controller目錄,選擇“Add new Item”。在對(duì)話框中找到mvc Controller,并確保賦予的名稱是以Controller后綴結(jié)尾的。在我們的例子中將會(huì)編寫ProductsController類。

在我們的例子中將會(huì)編寫ProductsController類  

好的,我們現(xiàn)在從ProductsController.cs開始

控制器的目的是為視圖準(zhǔn)備模型對(duì)象。我們希望盡可能地將邏輯放到視圖之外,因?yàn)樗茈y在視圖中進(jìn)行測(cè)試。因此,在控制器中,我們會(huì)訪問模型,并獲得所有創(chuàng)建完畢的模型,這樣,所有視圖所要做的就是輸出某些數(shù)據(jù)。

首先,我們需要訪問數(shù)據(jù)庫。

1. 添加正確的命名空間,包括Linq以及指向我們的OR映射的引用。

  1. using System.Linq;  
  2.  
  3. using NorthwindModel;  

2、接下來,我們需要?jiǎng)?chuàng)建NorthwindEntities容器類的實(shí)例。幾乎所有的action都會(huì)訪問這個(gè)類。

  1. public class ProductsController : Controller  
  2.  
  3. {     
  4.  
  5.  NorthwindEntities Northwind = new NorthwindEntities();  

好的,現(xiàn)在我們需要?jiǎng)?chuàng)建第一個(gè)action:顯示所有的類別。記住,控制器的職責(zé)是為視圖準(zhǔn)備模型對(duì)象。在定義一個(gè)新的action時(shí),我喜歡首先編寫一條注釋,以提醒我訪問這一功能的URL是什么。

接下來要做的事情就是從模型中訪問Categories。我將結(jié)果放到一個(gè)泛型集合類中(你可能需要添加System.Collections.Generic引用),然后將結(jié)果傳遞到名為“Categories”的視圖中。這是一個(gè)非常簡(jiǎn)單的例子,后面我們會(huì)在此處添加更加復(fù)雜的邏輯。

  1. //URL: http://localhost/Products/Categories  
  2.  
  3. [ControllerAction]  
  4.  
  5. public void Categories()  
  6.  
  7. {     
  8.  
  9.  List categories = Northwind.Categories.ToList();      
  10.  
  11. RenderView("Categories", categories);  
  12.  
  13. }  
  14.  

下一步,我們需要?jiǎng)?chuàng)建“Categories”視圖。

ASP.NET MVC實(shí)例:創(chuàng)建視圖

對(duì)于視圖而言,mvc框架給了開發(fā)者和模型差不多的靈活性。開發(fā)人員可以選擇一組視圖引擎并對(duì)它們進(jìn)行切換。

右擊Views文件夾,添加新的目錄“Products”。這使得我們可以清晰地組織我們的視圖。右擊Views/Products文件夾,然后添加一個(gè)新項(xiàng)mvc View Content Page。我們會(huì)充分地利用Master Page,它是在默認(rèn)的項(xiàng)目中已生成的,可以使得界面看起來更加友好。

右擊Views/Products文件夾,然后添加一個(gè)新項(xiàng)mvc View Content Page。  

將該頁面命名為Categories.aspx。視圖的名稱非常重要,它必須與之前提及的RenderView方法的第一個(gè)參數(shù)相匹配。

默認(rèn)項(xiàng)目會(huì)將Master Page放到Views/Shared/Site.Master中

 默認(rèn)項(xiàng)目會(huì)將Master Page放到Views/Shared/Site.Master中

ViewData是我們要從控制器中傳遞的內(nèi)容,為了得到對(duì)它的強(qiáng)類型訪問,我們需要告知視圖頁面它所期待的類型。這可以通過打開codebehind文件(Categories.aspx.cs),修改繼承的類型來完成:

  1. public partial class Categories : ViewPage  
  2.  
  3. {  
  4.  
  5. }  
  6.  

修改為:

  1. public partial class Categories : ViewPage<  List >   
  2.  
  3. {  
  4.  
  5. }  
  6.  

接著你就可以編寫清晰、簡(jiǎn)單、可設(shè)計(jì)的HTML了。注意,我在這里將所有從ViewData返回的元素項(xiàng)進(jìn)行了一次循環(huán),然后將它們作為鏈表傳出。我使用了mvc的輔助方法Html.ActionLink,為包含了對(duì)應(yīng)產(chǎn)品ID的List action創(chuàng)建了URL。

  1. < % foreach (var category in ViewData) { %>      
  2.  
  3.  < %= Html.ActionLink(category.CategoryName, new { action="List", id=category.CategoryName }) %>  
  4.  
  5. < % } %>  
  6.  

ASP.NET MVC實(shí)例:瀏覽產(chǎn)品

好的,一切準(zhǔn)備妥當(dāng),可以運(yùn)行了。

按下F5,導(dǎo)航條上就會(huì)出現(xiàn)我們剛才編寫的控制器action:http://localhost:64701/products/Categories

導(dǎo)航條上就會(huì)出現(xiàn)我們剛才編寫的控制器action:  

點(diǎn)擊任何一個(gè)鏈接都會(huì)出現(xiàn)一個(gè)錯(cuò)誤,因?yàn)槲覀冞€沒有編寫List action。這是我們接下來所要做的。

說句題外話,如果你像我這樣習(xí)慣在開發(fā)的aspx頁面上使用“View in Browser”,你可能會(huì)看到這個(gè)錯(cuò)誤。

若要重現(xiàn)此錯(cuò)誤,請(qǐng)右擊Categories.aspx,然后選擇View in browser。

 請(qǐng)右擊Categories.aspx,然后選擇View in browser

你會(huì)獲得一個(gè)錯(cuò)誤。為什么?是的,請(qǐng)務(wù)必謹(jǐn)記在mvc模型中,所有的執(zhí)行都要經(jīng)過控制器,視圖自身是不能運(yùn)行的。未來的工具會(huì)對(duì)此進(jìn)行改進(jìn),但至少在現(xiàn)在,可以對(duì)default.aspx使用F5或者通過“run in browser”進(jìn)行操作。當(dāng)然應(yīng)該首先確保你已經(jīng)編譯了解決方案。

List Action視圖現(xiàn)在,讓我們回到之前省略的內(nèi)容:添加List action。在這里我們需要的是在給定的Category中查找所有的產(chǎn)品。首先,我需要從模型中獲取所有產(chǎn)品,然后我必須確保Category的引用已經(jīng)被加載。Entity框架在默認(rèn)情況下提供了一個(gè)顯式的加載模型。因此,你必須明確地加載你所需要的所有表。最后,我們?cè)俪尸F(xiàn)視圖。

  1. //example URL:http://localhost:64701/products/List/Confections  
  2.  
  3. [ControllerAction]  
  4.  
  5. public void List(string id)  
  6.  
  7. {     
  8.  
  9.  List products = Northwind.GetProductsByCategory(id);      
  10.  
  11. //prepare the view by explicitly loading the categories        
  12.  
  13. products.FindAll(p => p.Category == null).ForEach(p => p.CategoryReference.Load());      
  14.  
  15. RenderView("ListingByCategory", products);  
  16.  
  17. }  
  18.  

注意,我調(diào)用了NorthwindDataContext類的一個(gè)自定義方法。我個(gè)人傾向于將所有的數(shù)據(jù)訪問邏輯封裝到這個(gè)類中。若要定義該方法,可以右擊Model,通過add new item選擇CodeFile,并命名為NorthwindDataContext.cs,然后給出如下的實(shí)現(xiàn)。

  1. using System;  
  2.  
  3. using System.Collections.Generic;  
  4.  
  5. using System.Linq;  
  6.  
  7. namespace NorthwindModel  
  8.  
  9. {     
  10.  
  11.  public partial class NorthwindEntities     
  12.  
  13.  {     
  14.  
  15.  }  
  16.  
  17. }  
  18.  

現(xiàn)在,你可以很容易地為該類添加數(shù)據(jù)訪問方法了,例如我們之前使用的GetProductsByCategory()方法。

  1. public List GetProductsByCategory(string category)  
  2.  
  3. {      
  4.  
  5. return Products.Where(p => p.Category.CategoryName == category).ToList();  
  6.  
  7. }  
  8.  

下一步,我們需要添加ListingByCategory視圖。遵循前面介紹的相同步驟,我們?cè)赩iews/Products/目錄下添加ListingByCategory.aspx頁面。

這一次,我們應(yīng)該讓ViewData成為L(zhǎng)ist類型

  1. public partial class ListingByCategory : ViewPage  
  2.  
  3.  {  
  4.  
  5. }  
  6.  

接下來實(shí)現(xiàn)視圖,我們只是對(duì)視圖的數(shù)據(jù)進(jìn)行了循環(huán),并以正確的格式輸出。

  1. < %--Print out the catagory name--%>   
  2.  
  3.  < % foreach (var product in ViewData) { %>    
  4.  
  5.   < % if (product.Category.CategoryName != null) {  %>     
  6.  
  7.       < %=product.Category.CategoryName  %>      
  8.  
  9.     < % break; %>   < %} //end if %>< %}//end foreach %>  
  10.  
  11. < % foreach (var product in ViewData) { %>    
  12.  
  13.   < img alt="< %=product.ProductName %>" src="/Content/Images/< %=product.ProductID%>.jpg" />    
  14.  
  15.   < %=product.ProductName %>      
  16.  
  17.  Price: < %=String.Format("{0:C2}", product.UnitPrice)%>   
  18.  
  19. < % } %>  
  20.  

一旦你在實(shí)例項(xiàng)目中添加了/Content/Images目錄,就會(huì)獲得如下頁面:

一旦你在實(shí)例項(xiàng)目中添加了/Content/Images目錄,就會(huì)獲得如下頁面  

Brad的實(shí)例是用C#編寫的,因此Julie Lerman選擇創(chuàng)建了和Brad相似的例子,她使用了VB.NET和AdventureWorksLT數(shù)據(jù)庫 ,并重點(diǎn)關(guān)注了更多高效的Entity框架查詢。Julie指出了她的實(shí)現(xiàn)與Brad的重大不同之處。

我的EDM(譯者注:指實(shí)體數(shù)據(jù)模型)創(chuàng)建自AdventureWorksLT數(shù)據(jù)庫。

在AW(譯者注:AdventureWorksLT的簡(jiǎn)寫)中,SalesOrderHeaders和Customer的關(guān)系與Northwind中Products和Category的關(guān)系相同。因此,在他使用Products的地方,我使用SalesOrderHeaders;在他使用Categories的地方,我使用Customers。

若要輕易地獲取數(shù)據(jù)并將其傳給視圖,則其中一個(gè)關(guān)鍵是我們需要傳遞“一個(gè)”對(duì)象(而且不是匿名類型)到視圖。然而,對(duì)于Order列表(每一個(gè)都具有Customer的名字)和Details列表(每一個(gè)都具有從Order和Customer中獲得的數(shù)據(jù))而言,我們真正需要的是一個(gè)對(duì)象圖。

【編輯推薦】

  1. 在DataBound事件處理中編碼確定數(shù)據(jù)的值
  2. 使用ASP.NET 2.0 FormView顯示數(shù)據(jù)
  3. ASP.NET DetailsView中格式化單元格
  4. 如何在DataBound事件中編碼確定數(shù)據(jù)的值
  5. DetailsView分頁顯示數(shù)據(jù)

責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-20 10:53:59

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2010-06-23 15:44:03

ASP.NET MVC

2009-03-13 10:58:48

ASP.NetMVC框架編程

2014-06-30 09:22:38

ASP.NETBootstrap

2012-06-26 10:24:51

Asp.Net框架Razor

2009-07-31 12:43:59

ASP.NET MVC

2009-07-28 15:08:50

MVC三層架構(gòu)實(shí)例

2009-07-20 12:59:53

ASP.NET MVCASP.NET框架的功

2009-06-01 10:23:31

asp.net mvcasp.net mvc.net mvc框架

2009-07-20 15:51:40

FubuMVC核心框架ASP.NET MVC

2009-07-24 10:55:00

asp.net mvc

2009-06-12 09:24:34

ASP.NET窗體ASP.NET MVC

2009-07-22 16:34:36

使用T4ASP.NET MVC

2009-07-22 09:36:54

使用UpdataModASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

免费高清一区二区三区| 蜜桃视频在线观看播放| 日韩欧美亚洲v片| 欧美一区二区三区在线观看免费| 久久精品国产www456c0m| 国产欧美日本一区二区三区| 欧美亚洲国产视频小说| 亚洲情综合五月天| 新呦u视频一区二区| 激情网站在线| 国产亚洲欧美中文| 欧美激情一区二区三区在线视频观看 | 最近2019中文字幕mv免费看 | 欧美精品videos另类| 中文字幕一区二区三区乱码图片| 亚洲跨种族黑人xxx| 免费在线精品视频| 视频成人永久免费视频| 精品国产乱码久久久久久蜜臀| 久久久综合香蕉尹人综合网| 成人性生活视频| 日韩一区二区在线观看视频| 一区二区精品国产| 一区二区三区亚洲变态调教大结局| 巨骚激情综合| 亚洲xxx自由成熟| 91福利精品在线观看| 色999日韩国产欧美一区二区| 久久亚洲国产成人精品无码区| 怡红院精品视频在线观看极品| 欧美一级在线亚洲天堂| 成人黄页网站视频| 国产综合色视频| 欧美成人精品在线视频| 秋霞av在线| 亚洲免费观看在线观看| 亚洲一区三区视频在线观看| 久久在线视频| 欧美肥老妇视频| 成人影院大全| 国产精品91xxx| 91高清免费视频| 免费网站成人| 国v精品久久久网| 久久成人免费视频| 精品无人乱码| 91精品久久久久久久久久不卡| 日本韩国欧美在线| 成人网在线免费观看| 日本免费在线视频| 久久尤物电影视频在线观看| 亚洲成年人专区| 精品国产a一区二区三区v免费| 亚洲啪啪av| 国产精品久久久91| 亚洲美女性视频| 国产一区二区精品| 热99在线视频| 日韩亚洲综合在线| 偷拍视频一区二区| 国产成人在线中文字幕| 亚洲精品综合精品自拍| 黄污网站在线观看| 亚洲人吸女人奶水| 粉嫩粉嫩芽的虎白女18在线视频| 久久精品国产网站| 韩日精品视频| 999福利在线视频| 欧美午夜激情小视频| 成年人在线视频| 欧美激情一区二区三区蜜桃视频| 成年人视频大全| 综合婷婷亚洲小说| free性欧美1819hd| 亚洲精品中文字幕乱码三区| 香港经典三级在线| 久久久国际精品| 久草中文在线观看| 91理论片午午论夜理片久久| 不卡一区二区在线| 五月婷婷开心综合| 3344永久| 欧美亚洲综合另类| av资源新版天堂在线| 97精品在线视频| 91日韩在线专区| 国产一区电影| 午夜免费久久久久| 久久99久久久久久久久久久| 在线观看免费版| 久久久久久这里只有精品| 曰本一区二区三区视频| 欧美精品一区二区三区免费播放| 日韩h在线观看| 人人精品人人爱| 女女色综合影院| 日韩精品不卡| 日韩av在线免费观看| 91亚洲一区| 北岛玲一区二区三区| 欧美做受高潮电影o| 亚洲欧洲av色图| 国产欧美日韩影院| 欧美18—20岁hd第一次| 26uuu亚洲伊人春色| 男女性色大片免费观看一区二区| 欧美高清成人| 国内精品视频免费| 91精品久久久久久蜜臀| 蓝色福利精品导航| 黄p免费网站| 亚洲天堂av在线免费| 99视频精品全部免费在线| 国产丝袜一区| 黄色国产在线| 国产高清精品一区二区三区| 日韩精品一区二区在线观看| 国产精品日本| 二区在线视频| 超碰97在线资源| 欧美在线999| 国产美女主播视频一区| 91jq激情在线观看| 动漫av免费观看| 裸模一区二区三区免费| 日韩a级大片| 91福利电影| 国产在线拍揄自揄拍无码| 一本色道久久综合亚洲精品按摩| 日本在线观看不卡视频| 成人同人动漫免费观看| 国产乱码精品一区二区三区亚洲人 | 色播色播色播色播色播在线| 久久久一区二区三区捆绑**| 99精产国品一二三产品香蕉| 国内精品久久久久久久久| 99v久久综合狠狠综合久久| √8天堂资源地址中文在线| 国产精品黄色影片导航在线观看| 狠狠狠色丁香婷婷综合激情 | 国产精品久久天天影视| 国产精品私拍pans大尺度在线| 91麻豆国产福利精品| 日本h片久久| 黄色网zhan| 久久久久久这里只有精品| 一区二区三区四区激情 | 欧美亚洲天堂| 国产视频福利一区| 欧美精品一区三区| 岛国av一区二区三区| 国产亚洲永久域名| 日韩福利视频一区| 少妇一区二区视频| 国内在线视频| 在线观影网站| 精品国产乱码久久久久久蜜柚| 国产狼人综合免费视频| 中文字幕精品一区二区精品绿巨人| 日韩美脚连裤袜丝袜在线| 91色在线看| 成人动漫av| 欧美女同在线观看| 色琪琪免费视频网站| youjizz.com在线观看| 亚洲自拍三区| 粉嫩精品一区二区三区在线观看| 精品粉嫩aⅴ一区二区三区四区| 国产精品久久久久一区二区三区| 亚洲尤物影院| 国产精品456露脸| 久久精品国产一区二区| 香蕉视频成人在线观看| 日韩国产一区二| 日韩超碰人人爽人人做人人添| 国产盗摄——sm在线视频| 色资源二区在线视频| 午夜欧美激情| 我爱我色成人网| 女同一区二区免费aⅴ| 亚洲人成77777男人| 男人午夜天堂| 国产片在线观看| 精品国产第一福利网站| 国严精品久久久久久亚洲影视 | 久久综合精品国产一区二区三区| 日日骚欧美日韩| 影音先锋国产精品| 国产精品三上| 韩日成人av| 美女视频黄久久| 99久久99久久精品国产片果冻 | 国产伦精品一区二区三区| 国内在线高清免费视频| 日韩在线综合网| 一区二区在线播放视频| 国产成人手机视频| 污黄视频在线看| 成人区精品一区二区不卡| 美脚恋feet久草欧美|