一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

如何利用ajax.dll進行asp.net ajax開發(fā)_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解讀軟件編程的走火入魔
程序員大多都是爺們,可能不大知道女人為了小臉蛋要投入多大精力和金錢(其中也有我們程序員辛苦Coding出的血汗錢)。她們每天又是如何精心在保養(yǎng)?如果你有女朋友、老婆了應該會明白的,通常在這么個小小的面積上投資的比重很大很大,就算名花有主了嫁人了

Asynchronous JavaScript and XML(AJAX)最近掀起的高潮,要完全歸功于Google在Google Suggest和Google Maps中的使用。對ASP.NET而言,AJAX不需要回傳就能進行服務器端處理,從而使客戶機(瀏覽器)具有豐富的服務器端能力。換句話說,它為異步指派和處理請求與服務器響應提供了一個框架。AJAX利用了一些不是很新穎的已有技術,但是對這些技術(加到一起就是AJAX)的愛好最近突然升溫。

請嘗試Michael Schwarz的AJAX .NET包裝器,通過它ASP.NET開發(fā)人員可以快速方便的部署很容易利用AJAX功能的頁面。需要注意的是,這個包裝器處于初期開發(fā)階段,因此還沒有完全成熟。

它是如何工作的——概述

AJAX依靠代理(broker)指派和處理往返服務器的請求。對此,.NET包裝器依靠客戶端XmlHttpRequest對象。多數(shù)瀏覽器都支持XmlHttpRequest對象,這就是選擇它的原因。因為包裝器的目的是隱藏XmlHttpRequest的實現(xiàn),我們就不再詳細討論它了。
包裝器本身通過將.NET函數(shù)標記為AJAX方法來工作。標記之后,AJAX就創(chuàng)建對應的JavaScript函數(shù),這些函數(shù)(和任何JavaScript函數(shù)一樣)作為代理可以在客戶端使用XmlHttpRequest調用。這些代理再映射回服務器端函數(shù)。

復雜嗎?并不復雜。我們來看一個例子。假設有一個.NET函數(shù):

ublic int Add(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}

AJAX .NET包裝器將自動創(chuàng)建名為“Add”、帶有兩個參數(shù)的JavaScript函數(shù)。使用JavaScript(在客戶機上)調用該函數(shù)時,請求將傳遞給服務器并把結果返回給客戶機。

初始設置

我們首先介紹“安裝”項目中使用的.dll的步驟。如果您很清楚如何添加.dll文件引用,可以跳過這一節(jié)。

首先,如果還沒有的話,請下載最新的AJAX版本。解壓下載的文件并把ajax.dll放到項目的引用文件夾中。在Visual Studio.NET中有機Solution Explorer的“References(引用)”節(jié)點并選擇Add Reference(添加引用)。在打開的對話框中,單擊Browse(瀏覽)并找到ref/ajax.dll文件。依次單擊Open(打開)和Ok(確認)。這樣就可以用AJAX .NET包裝器編程了。

建立HttpHandler

為了保證正常工作,第一步是在web.config中設置包裝器的HttpHandler。不需要詳細解釋HttpHandlers是什么及其如何工作,只要知道它們用于處理ASP.NET請求就足夠了。比如,所有*.aspx頁面請求都由
System.Web.UI.PageHandlerFactory類處理。類似的,我們讓所有對ajax/*.ashx的請求由Ajax.PageHandlerFactory處理:

〈configuration>
〈system.web>
〈httpHandlers>
〈add verb="POST,GET" path="ajax/*.ashx"
type="Ajax.PageHandlerFactory, Ajax" />
〈/httpHandlers>

〈system.web>
〈/configuration>

簡言之,上面的代碼告訴ASP.NET,和指定路徑(ajax/*.ashx)匹配的任何請求都由Ajax.PageHandlerFactory而不是默認處理程序工廠來處理。不需要創(chuàng)建ajax子目錄,使用這個神秘的目錄只是為了讓其他HttpHandlers能夠在自己建立的子目錄中使用.ashx擴展。

建立頁面

現(xiàn)在我們可以開始編碼了。創(chuàng)建一個新頁面或者打開已有的頁面,在file后的代碼中,為Page_Load事件添加以下代碼:

public class Index : System.Web.UI.Page{
private void Page_Load(object sender, EventArgs e){
Ajax.Utility.RegisterTypeForAjax(typeof(Index));
//
}
//
}


調用RegisterTypeForAjax將在頁面上引發(fā)后面的JavaScript(或者在頁面中手工加入以下兩行代碼):

〈script language="javascript" src="ajax/common.ashx">〈/script>
〈script language="javascript"
src="ajax/Namespace.PageClass,AssemblyName.ashx">〈/script>

其中最后一行的含義是:

Namespace.PageClass——當前頁面的名稱空間和類(通常是@Page指令中Inherits屬性的值)

AssemblyName——當前頁面所屬程序集的名稱(通常就是項目名)
下面是AjaxPlay項目中sample.aspx頁面的結果例子:

〈%@ Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" %>
〈html>
〈head>
〈script language="javascript" src="ajax/common.ashx">〈/script>
〈script language="javascript"
src="ajax/AjaxPlay.Sample,AjaxPlay.ashx">〈/script>
〈/head>
〈body>
〈form id="Form1" method="post" runat="server">

〈/form>
〈/body>
〈/html>

可以在瀏覽器中手工導航到src路徑(查看源代碼,復制粘貼路徑)檢查是否一切正常。如果兩個路徑都輸出一些(似乎)毫無意義的文本,就萬事大吉了。如果什么也沒輸出或者出現(xiàn)ASP.NET錯誤,則表明有些地方出現(xiàn)問題。

即便不知道HttpHandlers如何工作,上面的例子也很容易理解。通過web.config,我們已經(jīng)保證所有對ajax/*.ashx的請求都由自定義的處理程序處理。顯然,這里的兩個腳本標簽將由自定義的處理程序處理。

創(chuàng)建服務器端函數(shù)

現(xiàn)在來創(chuàng)建可從客戶端調用中異步訪問的服務器端函數(shù)。因為目前還不支持所有的返回類型(不用擔心,將在目前的基礎上開發(fā)新的版本),我們繼續(xù)使用簡單的ServerSideAdd函數(shù)吧。在file后的代碼中,向頁面添加下列代碼:

[Ajax.AjaxMethod()]
public int ServerSideAdd(int firstNumber, int secondNumber)
{
return firstNumber + secondNumber;
}

要注意,這些函數(shù)具有Ajax.AjaxMethod屬性集。該屬性告訴包裝器這些方法創(chuàng)建javaScript代理,以便在客戶端調用。

客戶端調用

最后一步是用JavaScript調用該函數(shù)。AJAX包裝器負責創(chuàng)建帶有兩個參數(shù)的JavaScript函數(shù)Sample.ServerSideAdd。對這種最簡單的函數(shù),只需要調用該方法并傳遞兩個數(shù)字:

〈%@ Page Inherits="AjaxPlay.Sample" Codebehind="sample.aspx.cs" %>
〈html>
〈head>
〈script language="javascript" src="ajax/common.ashx">〈/script>
〈script language="javascript"
src="ajax/AjaxPlay.Sample,AjaxPlay.ashx">〈/script>
〈/head>
〈body>
〈form id="Form1" method="post" runat="server">
〈script language="javascript">
var response = Sample.ServerSideAdd(100,99);
alert(response.value);
〈/script>
〈/form>
〈/body>
〈/html>

當然,我們不希望僅僅用這種強大的能力來警告用戶。這就是所有客戶端代理(如JavaScript Sample.ServerSideAd函數(shù))還接受其他特性的原因。這種特性就是為了處理響應而調用的回調函數(shù):

Sample.ServerSideAdd(100,99, ServerSideAdd_CallBack);

function ServerSideAdd_CallBack(response){
if (response.error != null){
alert(response.error);
return;
}
alert(response.value);
}


從上述代碼中可以看到我們指定了另外一個參數(shù)。ServerSideAdd_CallBack(同樣參見上述代碼)是用于處理服務器響應的客戶端函數(shù)。這個回調函數(shù)接收一個響應對象,該對象公開了三個主要性質

Value——服務器端函數(shù)實際返回的值(無論是字符串、自定義對象還是數(shù)據(jù)集)。

Error——錯誤消息,如果有的話。

Request——xml http請求的原始響應。

Context——上下文對象。

首先我們檢查error只看看是否出現(xiàn)了錯誤。通過在服務器端函數(shù)中拋出異常,可以很容易處理error特性。在這個簡化的例子中,然后用這個值警告用戶。Request特性可用于獲得更多信息(參見下一節(jié))。

處理類型

返回復雜類型

Ajax包裝器不僅能處理ServerSideAdd函數(shù)所返回的整數(shù)。它目前還支持integers、strings、double、booleans、DateTime、DataSets和DataTables,以及自定義類和數(shù)組等基本類型。其他所有類型都返回它們的ToString值。
返回的DataSets和真正的.NET DataSet差不多。假設一個服務器端函數(shù)返回DataSet,我們可以通過下面的代碼在客戶端顯示其中的內容:

〈script language="JavaScript">
//Asynchronous call to the mythical "GetDataSet" server-side function
function getDataSet(){
AjaxFunctions.GetDataSet(GetDataSet_callback);
}
function GetDataSet_callback(response){
var ds = response.value;
if(ds != null && typeof(ds) == "object" && ds.Tables != null){
var s = new Array();
s[s.length] = "〈table border=1>";
for(var i=0; i〈ds.Tables[0].Rows.length; i++){
s[s.length] = "〈tr>";
s[s.length] = "〈td>" + ds.Tables[0].Rows[i].FirstName + "〈/td>";
s[s.length] = "〈td>" + ds.Tables[0].Rows[i].Birthday + "〈/td>";
s[s.length] = "〈/tr>";
}
s[s.length] = "〈/table>";
tableDisplay.innerHTML = s.join("");
}
else {
alert("Error. [3001] " + response.request.responseText);
}
}
〈/script>

Ajax還可以返回自定義類,唯一的要求是必須用Serializable屬性標記。假設有如下的類:

[Serializable()]
public class User{
private int _userId;
private string _firstName;
private string _lastName;

public int userId{
get { return _userId; }
}
public string FirstName{
get { return _firstName; }
}
public string LastName{
get { return _lastName; }
}
public User(int _userId, string _firstName, string _lastName){
this._userId = _userId;
this._firstName = _firstName;
this._lastName = _lastName;
}
public User(){}
[AjaxMethod()]
public static User GetUser(int userId){
//Replace this with a DB hit or something :)
return new User(userId,"Michael", "Schwarz");
}
}

我們可以通過調用RegisterTypeForAjax注冊GetUser代理:

private void Page_Load(object sender, EventArgs e){
Utility.RegisterTypeForAjax(typeof(User));
}

這樣就可以在客戶端異步調用GetUser:

〈script language="javascript">
function getUser(userId){
User.GetUser(GetUser_callback);
}
function GetUser_callback(response){
if (response != null && response.value != null){
var user = response.value;
if (typeof(user) == "object"){
alert(user.FirstName + " " + user.LastName);
}
}
}
getUser(1);
〈/script>

響應中返回的值實際上是一個對象,公開了和服務器端對象相同的屬性(FirstName、LastName和UserId)。

自定義轉換器

我們已經(jīng)看到,Ajax .NET包裝器能夠處理很多不同的.NET類型。但是除了大量.NET類和內建類型以外,包裝器對不能正確返回的其他類型僅僅調用ToString()。為了避免這種情況,Ajax .NET包裝器允許開發(fā)人員創(chuàng)建對象轉換器,用于在服務器和客戶機之間平滑傳遞復雜對象。

其他事項

在其他類中注冊函數(shù)

上面的例子中,我們的服務器端函數(shù)都放在執(zhí)行頁面背后的代碼中。但是,沒有理由不能把這些函數(shù)放在單獨的類文件中。要記住,包裝器的工作方式是在指定類中發(fā)現(xiàn)所有帶Ajax.AjaxMethod的方法。需要的類通過第二個腳本標簽指定。使用Ajax.Utility.RegisterTypeForAjax,我們可以指定需要的任何類。比如,將我們的服務器端函數(shù)作為單獨的類是合情合理的:

Public Class AjaxFunctions
〈Ajax.AjaxMethod()> _
Public Function Validate(username As String, password As String) As Boolean
''do something
''Return something
End Function
End Class

通過指定類的類型而不是頁面就可以讓Ajax包裝器創(chuàng)建代理:

private void Page_Load(object sender, EventArgs e){
Ajax.Utility.RegisterTypeForAjax(typeof(AjaxFunctions));
//
}

要記住,客戶端代理的名稱是〈ClassName>.〈ServerSideFunctionName>。因此,如果ServerSideAdd函數(shù)放在上面虛構的AjaxFunctions類中,客戶端調用就應該是: AjaxFunctions.ServerSideAdd(1,2)。

代理到底是如何工作的

Ajax工具生成的第二個腳本標簽(也可以手工插入)傳遞了頁面的名稱空間、類名和程序集。根據(jù)這些信息,Ajax.PageHandlerFactory就能夠使用反射得到具有特定屬性的任何函數(shù)的詳細信息。顯然,處理函數(shù)查找具有AjaxMethod屬性的函數(shù)并得到它們的簽名(返回類型、名稱和參數(shù)),從能夠創(chuàng)建必要的客戶端代理。具體而言,包裝器創(chuàng)建一個和類同名的JavaScript對象,該對象提供代理。換句話說,給定一個帶有Ajax ServerSideAdd方法的服務器端類AjaxFunctions,我們就會得到公開ServerSideAdd函數(shù)的AjaxFunction JavaScript對象。如果將瀏覽器指向第二個腳本標簽的路徑就會看到這種動作。

返回Unicode字符

Ajax .NET包裝器能夠從服務器向客戶機返回Unicode字符。為此,數(shù)據(jù)在返回之前必須在服務器上用html編碼。比如:

[Ajax.AjaxMethod]
public string Test1(string name, string email, string comment){
string html = "";
html += "Hello " + name + "〈br>";
html += "Thank you for your comment 〈b>";
html += System.Web.HttpUtility.HtmlEncode(comment);
html += "〈/b>.";
return html;
}

SessionState

服務器端函數(shù)中很可能需要訪問會話信息。為此,只需要通過傳遞給Ajax.AjaxMethod屬性的一個參數(shù)告訴Ajax啟用這種功能。

在考察包裝器會話能力的同時,我們來看看其他幾個特性。這個例子中我們有一個文檔管理系統(tǒng),用戶編輯的時候會對文檔加鎖。其他用戶可以請求在文檔可用的時候得到通知。如果沒有AJAX,我們就只能等待該用戶再次返回來檢查請求的文檔是否可用。顯然不夠理想。使用支持會話狀態(tài)的Ajax就非常簡單了。

首先來編寫服務器端函數(shù),目標是循環(huán)遍歷用戶希望編輯的documentId(保存在會話中)并返回所有已釋放的文檔。

[Ajax.AjaxMethod(HttpSessionStateRequirement.Read)]
public ArrayList DocumentReleased(){
if (HttpContext.Current.Session["DocumentsWaiting"] == null){
return null;
}
ArrayList readyDocuments = new ArrayList();
int[] documents = (int[])HttpContext.Current.Session["DocumentsWaiting"];
for (int i = 0; i 〈 documents.Length; ++i){
Document document = Document.GetDocumentById(documents[i]);
if (document != null && document.Status == DocumentStatus.Ready){
readyDocuments.Add(document);
}
}
return readyDocuments;
}
}

要注意,我們指定了HttpSessionStateRequirement.Read值(還可以用Write和ReadWrite)。

現(xiàn)在編寫使用該方法的JavaScript:

〈script language="javascript">
function DocumentsReady_CallBack(response){
if (response.error != null){
alert(response.error);
return;
}
if (response.value != null && response.value.length > 0){
var div = document.getElementById("status");
div.innerHTML = "The following documents are ready!〈br />";
for (var i = 0; i 〈 response.value.length; ++i){
div.innerHTML += "〈a href=\"edit.aspx?documentId=" + response.value[i].DocumentId + "\">" + response.value[i].Name + "〈/a>〈br />";
}
}
setTimeout(''page.DocumentReleased(DocumentsReady_CallBack)'', 10000);
}
〈/script>
〈body onload="setTimeout(''Document.DocumentReleased(DocumentsReady_CallBack)'', 10000); ">

結束語

AJAX技術已經(jīng)催生了原來只有桌面開發(fā)才具備的健壯而豐富的Web界面。Ajax .NET包裝器讓您很容易就能利用這種新的強大技術。請注意,Ajax .NET包裝器和文檔仍在開發(fā)之中。

分享:淺談分頁那回事
混在web上,那有不同分頁打交道的,分頁偏偏又是一個硬傷,總是不能找到一個通用的解決方法,即使用上分頁自定義/用戶控件感覺還是少了點什么,性能。 web頁面一次一般顯示10行數(shù)據(jù)為好,但往往很多時候我們從數(shù)據(jù)庫中查出來上萬條數(shù)據(jù),這個時候我們要在上

來源:模板無憂//所屬分類:.Net教程/更新時間:2009-10-29
相關.Net教程
av电影一区二区| 日韩欧美99| 蜜桃传媒一区二区亚洲| 亚洲综合色自拍一区| 日韩精品一区二区三区电影| www.亚洲国产| 日韩精品一区二区三区色偷偷| 日本黄色不卡视频| 国产精品免费久久久久影院| 五月婷婷免费视频| 久久精品国产99精品国产亚洲性色| 免播放器亚洲一区| 蜜桃麻豆www久久国产精品| 久久99国产精品免费网站| 91免费视频国产| 国产成人免费视| www污在线观看| 一区二区免费看| 稀缺小u女呦精品呦| 日韩午夜av电影| 国产一级片视频| 欧美一级视频在线观看| 美日韩一区二区三区| 在线国产99| 亚洲成人综合网站| 韩国三级视频在线观看| 亚洲欧美制服第一页| 97caocao| 亚洲成人蜜桃| 夜夜精品视频一区二区| 天堂а√在线中文在线鲁大师| 欧美成人在线免费视频| 国产福利视频导航| 国产精品国语对白| 久久综合成人精品亚洲另类欧美| 日韩欧美精品一区二区三区经典| 欧美日韩国产丝袜美女| 欧美三级视频网站| 欧美大码xxxx| 日韩中文字幕区一区有砖一区 | 中文字幕亚洲一区二区三区| 手机看片一区二区| 亚洲久久中文字幕| 国产精品福利在线观看网址| 国产精品天天看| 久久久精品国产sm调教网站| 蜜桃狠狠色伊人亚洲综合网站| 在线观看日韩高清av| 亚洲欧美国产高清va在线播放| 爱爱爱爱免费视频| 国产99久久久欧美黑人| 色就色 综合激情| 欧美亚洲另类久久综合| 亚洲第一精品夜夜躁人人爽| 日本高清视频在线| 在线观看免费看片| 欧美一区二区三区精品电影| 亚洲一区中文日韩| 日本成人在线一区| 俄罗斯黄色录像| 一区二区三区 在线观看视| 国产成人精品免费网站| www.亚洲激情| 国产ts丝袜人妖系列视频| 日韩一区二区电影在线观看| 欧美激情一区二区三区在线视频观看 | 伊人精品一区二区三区| 黄色av免费播放| 亚洲人成无码www久久久| 国产视频一区二区不卡| 欧美精品激情在线| 欧美一级艳片视频免费观看| 日韩美女久久久| 国产九九视频一区二区三区| 一区二区三区免费在线| 免费一级做a爰片久久毛片潮| 成人网站免费观看入口| 欧美日韩一区二区视频在线观看| 91精品国产高清久久久久久久久| 欧美www视频| 91国产福利在线| 国产精品欧美一级免费| 精品一区二区在线播放| 国产福利免费视频| 精品国产青草久久久久96| 五月天婷婷色综合| 超薄肉色丝袜一二三| 婷婷五月精品中文字幕| 一个色综合久久| 国产一区视频免费观看| 超碰影院在线观看| 国产中文字幕免费观看| 精品久久免费观看| 国产91av视频在线观看| 亚洲欧美日本国产有色| 亚洲国产精品一区二区第一页| 俄罗斯精品一区二区| 国产传媒一区二区三区| 国产精选在线观看91| 91蜜桃网站免费观看| 色综合五月天导航| 97在线观看视频| 国产精品大片wwwwww| 国产成人综合一区二区三区| 亚洲色图欧美制服丝袜另类第一页 | 日韩欧美在线不卡| 日韩一区二区视频| 欧美一区二区三区播放老司机| 欧美日韩一区二区三区在线免费观看| 中文字幕在线观看不卡视频| 亚洲欧美另类小说视频| 午夜不卡av在线| 欧美性xxxxxxxx| 欧美日韩黄视频| 亚洲精品国产品国语在线| 亚洲免费精彩视频| 国产69精品久久久| 亚洲资源在线看| 婷婷精品国产一区二区三区日韩| 亚洲免费在线精品一区| 蜜臀av色欲a片无码精品一区| 日本在线观看免费视频| 偷拍夫妻性生活| 日韩精品成人一区| 黄色三级网站在线观看| 风间由美一区二区三区在线观看| 久久久综合网站| 在线观看亚洲一区| 亚洲高清久久久久久| 69av成年福利视频| 超碰国产精品久久国产精品99| 99亚洲精品视频| 亚洲欧洲日韩综合| 日日夜夜操视频| 久久99精品国产.久久久久久| 亚洲欧洲精品成人久久奇米网| 欧美日韩国产综合一区二区 | 精品成人av一区二区在线播放| 国产高清免费观看| 国产免费观看久久| 精品国产乱码久久久久久牛牛 | 欧美爱爱小视频| 男女男精品网站| 欧美色图在线视频| 久久久日本电影| 成人免费在线网| 污软件在线观看| 国产一区二区三区在线观看免费视频 | 少妇高潮流白浆| 欧美黄色免费看| 久久色在线观看| 亚洲日本成人女熟在线观看| 青娱乐一区二区| 中国一级片在线观看| www.亚洲激情.com| 色噜噜国产精品视频一区二区| 一区二区三区四区五区精品| 99久久99久久精品免费| 91片在线免费观看| 夜夜嗨av色综合久久久综合网| 色视频一区二区三区| 中国特黄一级片| 久久久噜噜噜久噜久久综合| 久久天天躁狠狠躁老女人| 一卡二卡三卡视频| 一级片免费观看视频| 欧美网站一区二区| 欧美重口乱码一区二区| 国产精品视频免费播放| 狠狠做深爱婷婷久久综合一区| 日韩av电影中文字幕| 中文字幕一区二区三区人妻在线视频 | 欧美日韩一区二区三区四区五区| 免费精品视频一区二区三区| 在线观看黄网站| 色综合久久88色综合天天6 | 91蜜桃免费观看视频| 51ⅴ精品国产91久久久久久| 国产精品久久AV无码| 久久久亚洲精品一区二区三区 | 日韩av大全| 精品黑人一区二区三区在线观看| 亚洲激情视频在线观看| 日韩av手机版| 久久综合五月天婷婷伊人| 国产伦精品免费视频| 天堂网av手机版| 精品久久久久香蕉网| 91视频这里只有精品| 国产午夜精品福利| 亚洲在线视频福利| 中文字幕一区2区3区| 亚洲国产精品美女| 国产一线在线观看| 欧美日韩国产一区在线| 日本免费不卡一区二区| 99精品一区二区三区| 精品国产综合| 青青草成人在线观看| 国产精品丝袜视频| 国产精品自拍电影| 97在线免费观看视频| 波多野结衣毛片| 欧美高清性猛交| 亚洲男人天堂网址| 欧美美最猛性xxxxxx| 婷婷激情五月网| 久久99亚洲热视| 亚洲网站在线免费观看| 亚洲777理论| 日韩女优在线播放| 日本中文字幕在线观看视频| 久久国产精品99国产精| 中日韩av在线| 91精品久久久久久久久久久久久久 | 精品国产自在久精品国产| 国产大片免费看| 欧美激情精品在线| 天天舔天天干天天操| 精品久久蜜桃| 久久午夜免费电影| 成人免费无码av| 欧美日韩二区三区| 美女网站视频色| 国语自产在线不卡| 狠狠色狠狠色合久久伊人| 中文字幕精品在线播放| 色噜噜狠狠色综合中国| 久久久久无码精品国产sm果冻| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 91美女精品网站| 资源网第一页久久久| 欧美偷拍一区二区| 日韩欧美激情视频| 99电影网电视剧在线观看| 国产日韩欧美a| 国产xxxxxxxxx| 久久久久久久成人| 国产高清精品网站| 中文字幕 欧美日韩| 日韩中文字幕在线看| 久久在线精品| 97人人爽人人| 欧美日韩国产二区| 99久久99久久综合| 五十路六十路七十路熟婆| 777午夜精品福利在线观看| 久久精品一级爱片| 性欧美videos| 精品蜜桃传媒| 欧美一区二区三区性视频| wwwav在线播放| 午夜视频在线网站| 国产成人精品在线观看| 一区二区三区四区在线| 国产一区二区视频免费| 日本香蕉视频在线观看| 日韩在线视频播放| 亚洲国产精品t66y| 毛片在线免费视频| 久久久性生活视频| 久久亚洲精品成人| 亚洲欧美一区二区久久| 亚洲男人的天堂在线视频| 日韩一级性生活片| 7777免费精品视频| 欧美无砖专区一中文字| 麻豆成人在线观看| 9999热视频| 男人日女人bb视频| 91精品国产综合久久久久久久久 | 亚洲第一综合网| 伊人久久大香线蕉av一区| 久久躁狠狠躁夜夜爽| 懂色av影视一区二区三区| 人人精品人人爱| 日韩成人高清视频| 波多野结衣在线免费观看| 精品国产免费一区二区三区| 中文字幕亚洲欧美一区二区三区| 亚洲一区免费视频| 激情文学综合丁香| 美女黄页在线观看| 欧美做受高潮6| 国产小视频精品| 一区二区三区av| 成人中心免费视频| 日韩网站免费观看高清| 色妞www精品视频| 国产日产欧美精品一区二区三区| а√天堂资源在线| 精品97人妻无码中文永久在线| 国产三级精品三级在线| 欧美精品久久96人妻无码| 国产精自产拍久久久久久| 神马久久桃色视频| 欧美一级夜夜爽| 欧美性猛交xxxx乱大交3| 国产欧美日韩激情| 国产伦理精品不卡| 狠狠综合久久av一区二区| 日本学生初尝黑人巨免费视频| 添女人荫蒂视频| 五月天六月丁香| 久久久国产欧美| 啊啊啊一区二区| 永久免费网站视频在线观看| 欧美一级二级三级九九九| 国产青春久久久国产毛片| 成人欧美一区二区三区在线 | 欧美妇女性影城| 欧美日韩精品一区二区在线播放| 国产亚洲欧洲一区高清在线观看| www.亚洲在线| 久久久精品日韩欧美| www欧美成人18+| 国产欧美日韩三区| 久久久久综合网| 亚洲欧洲国产日韩| 亚洲乱码中文字幕| 久久久久久久久久久网站| 老司机一区二区| 国产成人综合在线观看| 另类的小说在线视频另类成人小视频在线 | 97在线免费视频观看| 国产精品自拍合集| 日韩视频免费在线播放| 国产精欧美一区二区三区白种人| 中文字幕1234区| 精品无码在线观看| 色网站在线播放| 欧美性猛交xxxx乱大交hd| 国产成人精品一区二三区四区五区| 手机看片1024国产| 成人v精品蜜桃久久一区| 国产精品理伦片| 51精品久久久久久久蜜臀| 精品视频久久久久久| 777国产偷窥盗摄精品视频| 精品综合在线| 日韩一级片播放| 综合 欧美 亚洲日本| 国产黄色免费观看| 日本欧洲一区二区| 国产精品污污网站在线观看| 欧美视频中文字幕| 欧美成人免费视频| 蜜桃视频在线观看91| av在线网站观看| 久久精品人人做人人爽| 久久99精品久久久久久琪琪| 99re在线观看视频| 91看片就是不一样| 黄视频网站免费看| 日韩—二三区免费观看av| 亚洲少妇30p| 亚洲欧洲国产一区| 91在线观看网站| 极品人妻一区二区| 国产视频一二三四区| 亚洲精品日日夜夜| 色悠悠久久久久| 国产精品无码乱伦| 免费看特级毛片| 成人福利视频在线| 亚洲第一区在线观看| 国产精品乱码视频| 性欧美成人播放77777| 艳母动漫在线看| 91久久一区二区| 51国偷自产一区二区三区的来源 | 国产男女无遮挡猛进猛出| 99精品在线视频观看| 欧美日韩一区二区精品| 国产精品一区专区欧美日韩| 欧美xxxxxbbbbb| 另类小说一区二区三区| 日韩精品在线观| 欧美日韩dvd| 亚洲综合图片区| 91精品国产高清久久久久久久久| 男人亚洲天堂网| 国产精品综合久久久| 日本高清www| 亚洲成人日韩在线| 视频在线观看91| 欧美日韩一区二区三区不卡| 日产日韩在线亚洲欧美 | 欧美 亚洲 另类 激情 另类 | 7777精品伊人久久久大香线蕉经典版下载 | 日韩欧美中文一区| 国产欧美日韩在线播放| 少妇高潮一区二区三区喷水| 国产欧美日韩综合精品一区二区| 久久99热精品这里久久精品| 亚洲av无一区二区三区久久| 韩国精品免费视频| 精品国产一区二区在线| 91丝袜超薄交口足| 国产91丝袜在线播放0| 欧美综合一区第一页| 亚洲一级理论片| 欧美日韩久久久久| 蜜桃麻豆91| 丰满人妻一区二区三区免费视频 | 国产成人福利在线| 色噜噜狠狠成人网p站| 野外做受又硬又粗又大视频√| 日韩成人av影视| 国产精品a久久久久久|