成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

ASP.NET MVC實現樹形導航菜單

瀏覽:287日期:2022-06-08 18:53:47

在需要處理很多分類以及導航的時候,樹形導航菜單就比較適合。例如在汽車之家上:

頁面主要分兩部分,左邊是導航菜單,右邊顯示對應的內容。現在,我們就在ASP.NET MVC 4 下臨摹一個,如下:

實現的效果包括:
1、點擊導航菜單上的品牌,左側顯示該品牌下的所有車型。
2、點擊導航菜單上的車系,左側顯示該車系下的所有車型。
3、點擊左側上方的字母導航,錨點跳到導航菜單的對應部分。
4、頁面加載完畢,顯示所有品牌和車系,即樹形導航完全展開。
5、點擊導航菜單上的品牌,收縮或展開對應的車系,收縮時,品牌前面圖標為+號,展開時,品牌前面的圖片為-號。

源碼部分,在這里。

思路呢?

頁面分成左右2部分,使用Bootstrap輕松實現:

<div>    <div>    </div>    <div>    </div></div>

左側最上方的字母導航,被放在一個div中,頁面加載的時候向控制器動態請求。

品牌上方的字母歸類,比如奧迪上方的字母A,實際上是一個div。

品牌和車系放在了ul中,比如奧迪品牌以及奧迪下的奧迪A4和奧迪A6車系。車系被放在了dl中。

樹形菜單采用模版比較合適,先把數據填充到模版,再把模版追加到頁面元素。

當點擊左側樹形導航上的品牌或車系,右側通過iframe來呈現對應的內容。

領域先行。有關品牌和車系就抽象成如下的類:

    public class CarCategory    {public int Id { get; set; }public int ParentId { get; set; }public string Name { get; set; }public string FirstLetter { get; set; }public string AnchorName { get; set; }public int Level { get; set; }public short DelFlag { get; set; }    }

有關車型就抽象成如下的類:

    public class Car    {public int Id { get; set; }public int PinPaiId { get; set; }public int CheXiId { get; set; } public string Name { get; set; }    }

頁面左側呈現樹形導航需要向控制器請求json數據,大致格式是:

首字母
錨點名稱
所有品牌
品牌編號
品牌名稱
所有車系
車系編號
車系名稱
車系下車型的總數量

貌似有3層,那就從最里面這層開始建模。有關車系在樹形導航中的顯示:

    public class CheXiForDisplay    {public int CheXiId { get; set; }public int TotalCount { get; set; }public string CheXiName { get; set; }    }

有關品牌在樹形導航中的顯示:

    public class PinPaiForDisplay    {public int PinPaiId { get; set; }public string PinPaiName { get; set; }public List<CheXiForDisplay> CheXis { get; set; }    }

有關品牌車系分組的:

    public class PinPaiCheXiForDisplay    {public string FirstLetter { get; set; }public string Anchor { get; set; }public List<PinPaiForDisplay> PinPais { get; set; }    }

數據源從哪里來?模擬了一個:

    public class Database    {public static IEnumerable<CarCategory> GetAllCarCategories(){    return new List<CarCategory>    {new CarCategory(){Id = 1, ParentId = 0, Name = "奧迪",FirstLetter = "A", AnchorName = "AA", Level = 1, DelFlag = 0},new CarCategory(){Id = 2, ParentId = 0, Name = "寶馬",FirstLetter = "B", AnchorName = "BB", Level = 1, DelFlag = 0},new CarCategory(){Id = 3, ParentId = 0, Name = "保時捷",FirstLetter = "B", AnchorName = "BB", Level = 1, DelFlag = 0},new CarCategory(){Id = 4, ParentId = 0, Name = "長安",FirstLetter = "C", AnchorName = "CC", Level = 1, DelFlag = 0},new CarCategory(){Id = 5, ParentId = 0, Name = "大眾",FirstLetter = "D", AnchorName = "DD", Level = 1, DelFlag = 0},new CarCategory(){Id = 6, ParentId = 0, Name = "東風",FirstLetter = "D", AnchorName = "DD", Level = 1, DelFlag = 0},new CarCategory(){Id = 7, ParentId = 0, Name = "豐田",FirstLetter = "F", AnchorName = "FF", Level = 1, DelFlag = 0},new CarCategory(){Id = 8, ParentId = 0, Name = "福特",FirstLetter = "F", AnchorName = "FF", Level = 1, DelFlag = 0},new CarCategory(){Id = 9, ParentId = 1, Name = "奧迪A4",FirstLetter = "A", AnchorName = "AA", Level = 2, DelFlag = 0},new CarCategory(){Id = 10, ParentId = 1, Name = "奧迪A6",FirstLetter = "A", AnchorName = "AA", Level = 2, DelFlag = 0},new CarCategory(){Id = 11, ParentId = 2, Name = "寶馬1",FirstLetter = "B", AnchorName = "BB", Level = 2, DelFlag = 0},new CarCategory(){Id = 12, ParentId = 2, Name = "寶馬2",FirstLetter = "B", AnchorName = "BB", Level = 2, DelFlag = 0},new CarCategory(){Id = 13, ParentId = 3, Name = "保時捷1",FirstLetter = "B", AnchorName = "BB", Level = 2, DelFlag = 0},new CarCategory(){Id = 14, ParentId = 3, Name = "保時捷2",FirstLetter = "B", AnchorName = "BB", Level = 2, DelFlag = 0},new CarCategory(){Id = 15, ParentId = 4, Name = "長安1",FirstLetter = "C", AnchorName = "CC", Level = 2, DelFlag = 0},new CarCategory(){Id = 16, ParentId = 4, Name = "長安2",FirstLetter = "C", AnchorName = "CC", Level = 2, DelFlag = 0},new CarCategory(){Id = 17, ParentId = 5, Name = "大眾1",FirstLetter = "D", AnchorName = "DD", Level = 2, DelFlag = 0},new CarCategory(){Id = 18, ParentId = 5, Name = "大眾2",FirstLetter = "D", AnchorName = "DD", Level = 2, DelFlag = 1},new CarCategory(){Id = 19, ParentId = 6, Name = "東風1",FirstLetter = "D", AnchorName = "DD", Level = 2, DelFlag = 0},new CarCategory(){Id = 20, ParentId = 6, Name = "東風2",FirstLetter = "D", AnchorName = "DD", Level = 2, DelFlag = 0},new CarCategory(){Id = 21, ParentId = 7, Name = "豐田1",FirstLetter = "F", AnchorName = "FF", Level = 2, DelFlag = 0},new CarCategory(){Id = 22, ParentId = 7, Name = "豐田2",FirstLetter = "F", AnchorName = "FF", Level = 2, DelFlag = 0},new CarCategory(){Id = 23, ParentId = 8, Name = "福特1",FirstLetter = "F", AnchorName = "AFF", Level = 2, DelFlag = 0},new CarCategory(){Id = 24, ParentId = 8, Name = "福特2",FirstLetter = "F", AnchorName = "AFF", Level = 2, DelFlag = 0}    };}public static IEnumerable<Car> GetAllCars(){    return new List<Car>    {new Car(){Id = 1, PinPaiId = 1, CheXiId = 9, Name = "奧迪A401"},new Car(){Id = 2, PinPaiId = 1, CheXiId = 9, Name = "奧迪A402"},new Car(){Id = 3, PinPaiId = 1, CheXiId = 10, Name = "奧迪A601"},new Car(){Id = 4, PinPaiId = 1, CheXiId = 10, Name = "奧迪A602"},new Car(){Id = 5, PinPaiId = 2, CheXiId = 11, Name = "寶馬101"},new Car(){Id = 6, PinPaiId = 2, CheXiId = 11, Name = "寶馬102"},new Car(){Id = 7, PinPaiId = 2, CheXiId = 12, Name = "寶馬201"},new Car(){Id = 8, PinPaiId = 2, CheXiId = 12, Name = "寶馬202"},new Car(){Id = 9, PinPaiId = 3, CheXiId = 13, Name = "保時捷101"},new Car(){Id = 10, PinPaiId = 3, CheXiId = 13, Name = "保時捷102"},new Car(){Id = 11, PinPaiId = 3, CheXiId = 14, Name = "保時捷201"},new Car(){Id = 12, PinPaiId = 3, CheXiId = 14, Name = "保時捷202"},new Car(){Id = 13, PinPaiId = 4, CheXiId = 15, Name = "長安101"},new Car(){Id = 14, PinPaiId = 4, CheXiId = 15, Name = "長安102"},new Car(){Id = 15, PinPaiId = 4, CheXiId = 16, Name = "長安201"},new Car(){Id = 16, PinPaiId = 4, CheXiId = 16, Name = "長安202"},new Car(){Id = 17, PinPaiId = 5, CheXiId = 17, Name = "大眾101"},new Car(){Id = 18, PinPaiId = 5, CheXiId = 17, Name = "大眾102"},new Car(){Id = 19, PinPaiId = 5, CheXiId = 18, Name = "大眾201"},new Car(){Id = 20, PinPaiId = 5, CheXiId = 18, Name = "大眾202"},new Car(){Id = 21, PinPaiId = 6, CheXiId = 19, Name = "東風101"},new Car(){Id = 22, PinPaiId = 6, CheXiId = 19, Name = "東風102"},new Car(){Id = 23, PinPaiId = 6, CheXiId = 20, Name = "東風201"},new Car(){Id = 24, PinPaiId = 6, CheXiId = 20, Name = "東風202"},new Car(){Id = 25, PinPaiId = 7, CheXiId = 21, Name = "豐田101"},new Car(){Id = 26, PinPaiId = 7, CheXiId = 21, Name = "豐田102"},new Car(){Id = 27, PinPaiId = 7, CheXiId = 22, Name = "豐田201"},new Car(){Id = 28, PinPaiId = 7, CheXiId = 22, Name = "豐田202"},new Car(){Id = 29, PinPaiId = 8, CheXiId = 23, Name = "福特101"},new Car(){Id = 30, PinPaiId = 8, CheXiId = 23, Name = "福特102"},new Car(){Id = 31, PinPaiId = 8, CheXiId = 24, Name = "福特201"},new Car(){Id = 32, PinPaiId = 8, CheXiId = 24, Name = "福特202"}    };}    }

好,現在可以向控制器要數據了。

   public class HomeController : Controller    {public ActionResult Index(){    return View();}//獲取所有首字母以及錨點的jsonpublic ActionResult GetFirstLettersJson(){    var allCarCategories = Database.GetAllCarCategories();    var result = from l in allCarCategoriesgroup l by l.FirstLetterinto gselect new {firstletter = g.Key, anchor=g.ToList()[0].AnchorName};    return Json(result, JsonRequestBehavior.AllowGet);}//獲取按首字母分組后的品牌車系jsonpublic ActionResult GetPinPaiCheXiJson() {    var allPinPais = Database.GetAllCarCategories().Where(c => c.Level == 1).OrderBy(c => c.FirstLetter);    var allPinPaisGroup = from p in allPinPaisgroup p by new{    p.FirstLetter,    p.AnchorName};    List<PinPaiCheXiForDisplay> result1 = new List<PinPaiCheXiForDisplay>();    foreach (var item in allPinPaisGroup)    {//品牌車系PinPaiCheXiForDisplay pinPaiCheXiForDisplay = new PinPaiCheXiForDisplay();pinPaiCheXiForDisplay.FirstLetter = item.Key.FirstLetter;pinPaiCheXiForDisplay.Anchor = item.Key.AnchorName;//品牌List<PinPaiForDisplay> pinPaiForDisplays = new List<PinPaiForDisplay>();foreach (var pinpai in item.ToList()){    PinPaiForDisplay pinPaiForDisplay = new PinPaiForDisplay();    pinPaiForDisplay.PinPaiId = pinpai.Id;    pinPaiForDisplay.PinPaiName = pinpai.Name;        //車系    List<CheXiForDisplay> cheXiForDisplays = new List<CheXiForDisplay>();    var cheXis = Database.GetAllCarCategories().Where(c => c.ParentId == pinpai.Id).OrderBy(c => c.Id);    foreach (var chexi in cheXis)    {CheXiForDisplay cheXiForDisplay = new CheXiForDisplay();cheXiForDisplay.CheXiId = chexi.Id;cheXiForDisplay.CheXiName = chexi.Name;cheXiForDisplay.TotalCount = cheXis.Count();cheXiForDisplays.Add(cheXiForDisplay);    }    pinPaiForDisplay.CheXis = cheXiForDisplays;    pinPaiForDisplays.Add(pinPaiForDisplay);}pinPaiCheXiForDisplay.PinPais = pinPaiForDisplays;result1.Add(pinPaiCheXiForDisplay);    }    return Json(result1, JsonRequestBehavior.AllowGet);}//根據品牌Id顯示車型public ActionResult GetCheXingsByPId(int pid){    var cars = Database.GetAllCars().Where(c => c.PinPaiId == pid);    return View(cars);}//根據車系Id顯示車型public ActionResult GetCheXingsByChexiId(int cxid){    var cars = Database.GetAllCars().Where(c => c.CheXiId == cxid);    return View(cars);}    }

在Shared/_Layout.cshtml中,該引用的css,js都要引用上。

<head>    <meta charset="utf-8" />    <meta name="viewport" content="width=device-width" />    <title>@ViewBag.Title</title>    <link href="~/bootstrap/css/bootstrap.min.css" rel="external nofollow"  rel="stylesheet" />    @Styles.Render("~/Content/css")    @RenderSection("styles", required: false)    @Scripts.Render("~/bundles/jquery")    <script src="~/bootstrap/js/bootstrap.min.js"></script></head><body>    @RenderBody()        @RenderSection("scripts", required: false)</body>

Home/Index.cshtml就負責顯示就行了。

@{    ViewBag.Title = "Index";    Layout = "~/Views/Shared/_Layout.cshtml";}@section styles{    <link href="~/Content/sidemenu.css" rel="external nofollow"  rel="stylesheet" />}<div>    <div><!--字母導航開始--><div id="lDaoHang"></div><!--字母導航結束--><!--樹開始--><div id="cTreeDiv"></div><!--樹結束--><div>    <dl id="test"></dl></div>    </div>    <div><div id="carContent">    <iframe id="frameCar" src="" scrolling="no" frameborder="0" height="100%" width="100%" onload="this.height=this.contentWindow.document.documentElement.scrollHeight"></iframe></div>    </div></div>@section scripts{    <script src="~/Scripts/jquery.tmpl.min.js"></script>    <script type="text/javascript">$(function () {    //加載首字母    $.getJSON("@Url.Action("GetFirstLettersJson", "Home")", function (data) {$("#firstLetterTemplate").tmpl(data).appendTo("#lDaoHang");    });    //加載所有品牌車系    $.getJSON("@Url.Action("GetPinPaiCheXiJson", "Home")", function (data) {$("#pinpaiTemplate").tmpl(data).appendTo("#cTreeDiv");$(".pLink").each(function () {    pinPaiInitialState($(this));});    });    //隱藏ifame所在div    $("#carContent").css("display", "none");    //點擊品牌    $("#cTreeDiv").on("click", ".pLink", function () {//切換togglePinPaiState($(this));//顯示右邊區域var url = "/Home/GetCheXingsByPId?pid=" + $(this).attr("id");$("#frameCar").attr("src", url);$("#carContent").css("display", "block");    });    //點擊車系    $("#cTreeDiv").on("click", ".cxLink", function () {//顯示右邊區域var url = "/Home/GetCheXingsByChexiId?cxid=" + $(this).attr("id");$("#frameCar").attr("src", url);$("#carContent").css("display", "block");    });});//品牌的初始狀態,即把車系隱藏和品牌前面的圖標為+號var pstate = 0;//品牌只有2種狀態:所有車系隱藏,品牌前面的圖標變為為+號;要么顯示品牌下的所有車系,品牌前面的圖標變為-號//把車系隱藏和品牌前面的圖標為+號,記為狀態0//把車系隱藏和品牌前面的圖標為-號,記為狀態1function togglePinPaiState($pinpai) {    if (pstate == 0) {var $i = $pinpai.parent().find("i");var attr = $i.attr("class");if (typeof attr !== typeof undefined && attr !== false) {    $i.removeClass("iconHide");}$i.addClass("iconShow");$pinpai.parent().parent().find("dl").show();pstate = 1;    } else {var $j = $pinpai.parent().find("i");var attr1 = $j.attr("class");if (typeof attr1 !== typeof undefined && attr1 !== false) {    $j.removeClass("iconShow");}$j.addClass("iconHide");$pinpai.parent().parent().find("dl").hide();pstate = 0;    }}function pinPaiInitialState($pinpai) {    pstate = 0;    togglePinPaiState($pinpai);}    </script>    <!--首字母模版-->    <script id="firstLetterTemplate" type="text/x-jQuery-tmpl"><div>    <a href="#${anchor}" rel="external nofollow" >${firstletter}</a></div>    </script>    <!--品牌模版-->    <script id="pinpaiTemplate" type="text/x-jQuery-tmpl"><div id="${Anchor}">${FirstLetter}</div><ul>    {{if PinPais}}    {{each PinPais}}    <li><h5>    <a href="javascript:void(0)" rel="external nofollow"  rel="external nofollow"  id="${$value.PinPaiId}"><i></i>${$value.PinPaiName}</a></h5><dl>    {{tmpl(CheXis) "#chexiTemplate"}}</dl>    </li>    {{/each}}    {{else}}    <li>沒有對應品牌</li>    {{/if}}</ul>    </script>    <!--車系模版-->    <script id="chexiTemplate" type="text/x-jQuery-tmpl"><dd><a id="${CheXiId}" href="javascript:void(0)" rel="external nofollow"  rel="external nofollow" >${CheXiName}<em>(${TotalCount})</em></a></dd>    </script>}

以上,

  • 從控制器返回的有關樹形菜單的json數據,先填充到jquery.tmpl.min.js模版中,然后追加到頁面上。
  • 樹形菜單的展開或收縮,通過全局變量pstate在0和1之間的切換來實現,頁面初次加載給變量pstate一個初始值。

另外,點擊樹形導航上的品牌,iframe加載的視圖是Home/GetCheXingsByPId.cshtml

@model IEnumerable<MvcApplication1.Models.Car>@{    ViewBag.Title = "GetCheXingsByPId";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>GetCheXingsByPId</h2><div>    @foreach (var item in Model)    {<p>@item.Name </p>        }</div>

點擊樹形導航上的車系,iframe加載的視圖是Home/GetCheXingsByChexiId.cshtml

@model IEnumerable<MvcApplication1.Models.Car>@{    ViewBag.Title = "GetCheXingsByChexiId";    Layout = "~/Views/Shared/_Layout.cshtml";}<h2>GetCheXingsByChexiId</h2><div>    @foreach (var item in Model)    {<p>@item.Name </p>        }</div>

就這樣。

到此這篇關于ASP.NET MVC實現樹形導航菜單的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。

標簽: ASP.NET
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩制服丝袜av| 国产成人在线视频网址| 黄色工厂这里只有精品| 亚洲高清视频中文字幕| 日韩精品自拍偷拍| 国产伦精品一区二区三| 99re66热这里只有精品3直播| 亚洲成人久久影院| 美女图片一区二区| 久久久精品影视| 91在线视频18| 中文字幕va一区二区三区| 欧美日本久久| 国产三区在线成人av| 91精品国产欧美一区二区成人 | 欧美三片在线视频观看| 国产综合18久久久久久| 国产成人av电影在线| 麻豆成人综合网| 亚洲va欧美va人人爽午夜| 中文字幕视频一区| 国产精品视频你懂的| 精品国产髙清在线看国产毛片| 欧美日产在线观看| 欧美色区777第一页| 色94色欧美sute亚洲线路一ni| 天天影视色香欲综合网老头| 在线日韩一区二区| 精品在线一区二区三区| 欧美乱妇一区二区三区不卡视频| 国产精品88888| 精品蜜桃在线看| 欧美日韩国产精品一区二区亚洲| 成人免费在线视频观看| 国产精品日韩久久久| 天天影视网天天综合色在线播放| 欧美无乱码久久久免费午夜一区| 国产一区二区三区香蕉| 亚洲啪啪91| 国产欧美日韩亚洲| 国产精品一区二区a| 欧美专区18| 老牛影视一区二区三区| 色吊一区二区三区| 91激情在线视频| 欧美午夜精品免费| 91国偷自产一区二区使用方法| 色狠狠一区二区三区香蕉| 欧美三级在线看| 91精品国产入口在线| 日韩欧美在线综合网| 精品国产一区二区国模嫣然| 国产亚洲欧美中文| 亚洲私人黄色宅男| 亚洲国产综合色| 欧美aaaaaa午夜精品| 另类小说视频一区二区| 国产一区二区三区视频在线播放| 成人性生交大片免费看视频在线| 色综合一个色综合| 亚洲国产日韩欧美| 午夜在线精品偷拍| 欧美午夜宅男影院| 欧美精品日韩一本| 2024国产精品视频| 中文字幕欧美一| 亚洲va欧美va人人爽| 国精产品一区一区三区mba桃花 | 欧美精品一二三区| 26uuu国产电影一区二区| 国产精品久久一卡二卡| 亚洲曰韩产成在线| 麻豆精品在线看| www.综合网.com| 亚洲视频综合| 嫩草成人www欧美| 3d成人h动漫网站入口| 精品久久久久久久久久久久久久久久久 | 欧美激情一区二区三区四区| 午夜亚洲伦理| 粉嫩一区二区三区在线看| 亚洲伦理在线免费看| 欧美日韩性生活| 欧美色综合网| 久久国内精品视频| 国产精品白丝在线| 欧美日韩一区二区三区在线 | 亚洲免费在线电影| 91精品国产高清一区二区三区| 黄页网站一区| 精品一区二区影视| 国产精品国产三级国产| 欧美男人的天堂一二区| 亚洲电影成人| 国产风韵犹存在线视精品| 亚洲精品国产高清久久伦理二区| 日韩一区二区电影在线| 国产精品试看| 99国产精品久久久久| 爽好多水快深点欧美视频| 久久亚洲精华国产精华液 | 亚洲卡通动漫在线| 日韩精品一区二区三区三区免费 | 欧美在线精品一区| 男人的天堂久久精品| 国产精品五月天| 欧美剧情电影在线观看完整版免费励志电影| 精品动漫一区| 国产成人免费视频| 性做久久久久久免费观看欧美| 久久久久久久电影| 欧美日韩在线一区二区| 99热精品在线观看| 99热在这里有精品免费| 理论片日本一区| 一区二区三区欧美在线观看| 国产欧美不卡| 91亚洲精品乱码久久久久久蜜桃| 美女一区二区视频| 亚洲一区影音先锋| 国产精品色噜噜| 欧美成人官网二区| 欧美日韩午夜在线| 欧美一级专区| 亚洲国产精品第一区二区| 91在线精品一区二区| 韩国一区二区三区| 婷婷综合另类小说色区| 亚洲人一二三区| 久久精品欧美日韩精品| 91精品国产综合久久婷婷香蕉| 久久综合影音| 国产亚洲在线| 精品96久久久久久中文字幕无| 成a人片国产精品| 国内精品伊人久久久久av一坑 | 97成人超碰视| 国产久卡久卡久卡久卡视频精品| 肉丝袜脚交视频一区二区| 亚洲精品成a人| 中文字幕一区二区三区不卡在线| 久久久久久免费毛片精品| 欧美一区二区三区日韩视频| 欧美午夜片在线观看| 久久激情一区| 午夜一区不卡| 正在播放亚洲| 在线成人国产| 欧美视频在线观看| 欧美一区二区三区另类| 成人高清免费观看| 国产福利一区在线观看| 天天色综合成人网| 亚洲最新视频在线观看| 亚洲欧美日韩在线不卡| 日韩理论片中文av| 国产精品久久久久久久久果冻传媒| 日韩女优视频免费观看| 日韩一区二区免费在线观看| 日本高清不卡在线观看| 色婷婷亚洲综合| 久久中文字幕一区二区三区| 亚洲一卡久久| 亚洲欧美bt| 久久亚洲电影| 色狠狠av一区二区三区| 日本韩国精品在线| 在线观看日产精品| 欧美日韩日日摸| 欧美精品电影在线播放| 91麻豆精品国产91久久久更新时间| 在线不卡免费av| 日韩三级高清在线| 久久综合av免费| 久久久久久电影| 国产精品三级在线观看| 亚洲天堂精品在线观看| 亚洲一区在线观看网站| 视频在线在亚洲| 免费精品视频在线| 激情亚洲综合在线| 国产精品18久久久久久vr| 成人天堂资源www在线| 91在线高清观看| 欧美激情综合色综合啪啪| 国产一区二区三区自拍| 在线精品在线| 欧美亚洲三级| 日本高清无吗v一区| 欧美日韩免费视频| 日韩欧美中文字幕精品| 久久久精品中文字幕麻豆发布| 国产精品乱人伦| 亚洲男人的天堂在线aⅴ视频| 亚洲国产一二三| 婷婷久久综合九色综合绿巨人| 欧美日韩国产不卡| 欧美一区免费| 制服.丝袜.亚洲.另类.中文| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 |