精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺析ASP.NET MVC路由規則XML化的方法

開發 后端
本文由作者為大家介紹ASP.NET MVC路由規則XML化的方法,希望對大家的開發有所幫助。

本文主要針對的是ASP.NET MVC路由規則的問題,作者本次所研究的是ASP.NET MVC路由規則XML,希望那個通過本文能對大家有所幫助。

最近由于工作關系,重新回顧了ASP.NET MVC的1.0 版本。2.0版本還沒有研究。

由于MVC框架發展不久,還有很多不足的地方。其中關于路由規則配置這一塊問題比較大。首先路由規則是在全局配置問價 Global.asax 的 Application_Start()事件中注冊的。

  1. public static void RegisterRoutes(RouteCollection routes)    
  2.    {    
  3.        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");    
  4.         routes.MapRoute(    
  5.    "User",                                              // Route name    
  6.    "{controller}/{action}/{id}",                        // URL with parameters    
  7.  new { controller = "User", action = "Show", id = "0" } // Parameter defaults    
  8.         );    
  9.     }    
  10.     protected void Application_Start()    
  11.     {    
  12.         RegisterRoutes(RouteTable.Routes);    
  13.     }  

默認硬編碼的方式使得以后可維護程度大大降低。MVC 1.0 似乎沒有提供很好的基于配置文件的路由規則設置。所以只好自己實現了。直到寫這篇文章時,才找到了一個比較好的解決方案。

以下是 自定義的XML 格式

  1. <?xml version="1.0" encoding="utf-8" ?>    
  2. <MapRoutes>  
  1. <!--默認規則-->    
  2. <MapRoute name="Default" url="{controller}/{action}">    
  3.   <Params>    
  4.     <Item key="controller" default="Article"/>    
  5.     <Item key="action" default="Index"/>    
  6.   </Params>    
  7. </MapRoute>    
  8.  <!--顯示新聞列表的路由規則-->    
  9. <MapRoute name="ShowArticleList" url="{controller}/{action}/{typeId}/{pageIndex}/{pageSize}">    
  10.   <Params>    
  11.     <Item key="controller" default="Article"/>    
  12.     <Item key="action" default="Index"/>    
  13.     <Item key="typeId" default="1"/>    
  14.     <Item key="pageIndex" default="1"/>    
  15.     <Item key="pageSize" default="10"/>    
  16.   </Params>    
  17. </MapRoute>    
  18.  </MapRoutes>  

一下是全部代碼

  1.  /* ***********************************************    
  2.   * 作者 :湯曉華/tension 任何轉載請務必保留此頭部信息 版權所有 盜版必究    
  3.  * Email:tension1990@hotmail.com     
  4.  * 描述 :    
  5.  * 創建時間:2010-3-9 15:17:26    
  6.  * 修改歷史:    
  7.  * ***********************************************/   
  8.  using System;    
  9.  using System.Collections.Generic;    
  10.  using System.Linq;    
  11.  using System.Text;    
  12.  using System.Web.Routing;    
  13.  using System.Web.Mvc;    
  14.  using System.Xml.Linq;    
  15.  using Microsoft.CSharp;    
  16.  using System.CodeDom.Compiler;    
  17.  namespace Tension.Mvc    
  18.  {    
  19.      public static class RouteHelper    
  20.      {    
  21.          /// <summary>    
  22.          /// 從XML文件中注冊路由規則    
  23.          /// </summary>    
  24.          /// <param name="routes"></param>    
  25.          /// <param name="cfgFile"></param>    
  26.          public static void Register(this RouteCollection routes, string cfgFile)    
  27.          {    
  28.              IList<Route> Routes = GetRoutes(cfgFile);     
  29.              foreach (var item in Routes)    
  30.             {    
  31.                  //路由規則對象    
  32.                  object obj = CreateObjectFormString(item.ToString(), item.Name);    
  33.                  routes.MapRoute(    
  34.                         item.Name,               // Route name    
  35.                         item.Url,                // URL with parameters    
  36.                         obj                     // Parameter defaults    
  37.                     );     
  38.              }    
  39.          }    
  40.          /// <summary>    
  41.          ///  從XML文件中注冊路由規則 默認文件為網站根目錄下MapRoute.config    
  42.          /// </summary>    
  43.          /// <param name="routes"></param>    
  44.          public static void Register(this RouteCollection routes)    
  45.         {    
  46. Register(routes, string.Format("{0}\\MapRoute.config", Tension.ServerInfo.GetRootPath()));    
  47.         }      
  48.          /// <summary>    
  49.         /// 從string動態創建類對象    
  50.         /// </summary>    
  51.          /// <param name="codeString"></param>    
  52.          /// <param name="className"></param>    
  53.         /// <returns></returns>    
  54.          private static object CreateObjectFormString(string codeString, string className)    
  55.          {    
  56.              CSharpCodeProvider ccp = new CSharpCodeProvider();    
  57.              CompilerParameters param = new CompilerParameters(new string[] { "System.dll" });    
  58.              CompilerResults cr = ccp.CompileAssemblyFromSource(param, codeString);    
  59.              Type type = cr.CompiledAssembly.GetType(className);    
  60.              return type.GetConstructor(System.Type.EmptyTypes).Invoke(null);    
  61.          }    
  62.  /// <summary>    
  63. /// 從XML文件中解析路由規則    
  64. /// </summary>    
  65.  /// <param name="configFile"></param>    
  66. /// <returns></returns>    
  67. private static IList<Route> GetRoutes(string configFile)    
  68. {    
  69. StringBuilder sb = new StringBuilder();    
  70. Console.WriteLine(sb.ToString());    
  71. IList<Route> Routes = new List<Route>();    
  72. XElement xe = XElement.Load(configFile);    
  73. #region MyRegion    
  74. foreach (var item in xe.Elements("MapRoute"))    
  75.  {    
  76. 名稱屬性    
  77. XAttribute xaName = item.Attribute("name");    
  78. if (xaName == null || string.IsNullOrEmpty(xaName.Value))    
  79. {    
  80. throw new ArgumentNullException("name!說明:路由配置文件中某規則缺少name屬性或name屬性的值為空字符串");    
  81.  }    
  82. //URL屬性    
  83. XAttribute urlName = item.Attribute("url");    
  84.  if (urlName == null || string.IsNullOrEmpty(urlName.Value))    
  85. {    
  86.  throw new ArgumentNullException("url!說明:路由配置文件中某規則缺少url屬性或url屬性的值為空字符串");    
  87.   }    
  88. Dictionary<stringstring> DictParams = new Dictionary<stringstring>();    
  89.  #region MyRegion    
  90.  foreach (var pItem in item.Element("Params").Elements("Item"))    
  91.   {    
  92.  XAttribute itemKey = pItem.Attribute("key");    
  93. if (itemKey == null || string.IsNullOrEmpty(itemKey.Value))    
  94.  {    
  95. throw new ArgumentNullException("Item->key!說明:路由配置文件中某規則缺少Item->key屬性或Item->key屬性的值為空字符串");    
  96.   }    
  97.  XAttribute itemDefault = pItem.Attribute("default");    
  98. if (itemDefault == null || string.IsNullOrEmpty(itemDefault.Value))    
  99. {    
  100. throw new ArgumentNullException("Item->default!說明:路由配置文件中某規則缺少Item->default屬性或Item->default屬性的值為空字符串");    
  101.  }    
  102.  DictParams.Add(itemKey.Value, itemDefault.Value);    
  103.  }    
  104.  #endregion    
  105. Routes.Add(new Route() { Name = xaName.Value, Url = urlName.Value, Params = DictParams });    
  106. }    
  107.  #endregion    
  108.  return Routes;    
  109.     }    
  110.     }    
  111.  /// <summary>    
  112.  /// 路由規則    
  113.  /// </summary>    
  114.  public class Route    
  115.  {    
  116.  public string Name { getset; }    
  117. public string Url { getset; }    
  118. public Dictionary<stringstring> Params { getset; }    
  119.  /// <summary>    
  120. /// 重寫ToString 方法 產生需要動態代碼段    
  121. /// </summary>     
  122.  /// <returns></returns>    
  123.  public override string ToString()    
  124.  {    
  125.  StringBuilder sb = new StringBuilder();    
  126.  sb.AppendFormat("public class {0}", Name);    
  127. sb.Append("{");    
  128.  foreach (var item in Params)    
  129.  {    
  130. sb.AppendFormat("public string {0}", item.Key);    
  131. sb.Append("{get{return \"");    
  132. sb.Append(item.Value);    
  133. sb.Append("\";}} ");    
  134.   }    
  135. sb.Append("}");    
  136.  return sb.ToString();    
  137.  }    
  138.    }    
  139. }  

在實現過程中遇到的最大問題就是 參數列表的動態裝載 看一下以下代碼

  1. routes.MapRoute(   
  2. "User",                                              // Route name   
  3.  "{controller}/{action}/{id}",                           // URL with parameters   
  4. new { controller = "User", action = "Show", id = "0" }  // Parameter defaults   
  5.  );  

這是硬編碼實現的路由規則注冊

其中 第三個參數(new { controller = "User", action = "Show", id = "0" } ) 是一個匿名對象

該對象如何動態構建成了難題。(才疏學淺)

嘗試著傳入一個 Dictionary<K,T> 但是沒有用,ASP.NET 解析這個參數的時候是以反射形式讀取的對象屬性。

后來想到了使用代碼段 在運行時動態創建對象。

我們將類似代碼段

  1. public class Default{public string controller{get{return "Article";}} public str   
  2. ing action{get{return "Index";}} public string id{get{return "0";}} public strin   
  3. g page{get{return "1";}} public string size{get{return "10";}} } 

傳入方法

  1. private static object CreateObjectFormString(string codeString, string className)   
  2. {   
  3. CSharpCodeProvider ccp = new CSharpCodeProvider();   
  4. CompilerParameters param = new CompilerParameters(new string[] { "System.dll" });   
  5. CompilerResults cr = ccp.CompileAssemblyFromSource(param, codeString);   
  6. Type type = cr.CompiledAssembly.GetType(className);   
  7. return type.GetConstructor(System.Type.EmptyTypes).Invoke(null);   

即可有運行時動態的創建我們需要的參數對象。

以后就可以方便的在XML注冊路由了。

public static void Register(this RouteCollection routes)  對 RouteCollection 對象添加了擴展方法

引入對應的命名空間后就方便的注冊了。

改進后的注冊方法

  1.  public static void RegisterRoutes(RouteCollection routes)   
  2.  {   
  3.  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");   
  4.  }   
  5. protected void Application_Start()   
  6.  {   
  7. RegisterRoutes(RouteTable.Routes);   
  8.  //執行RouteCollection的擴展方法 用來注冊XML文件中的路由配置信息   
  9. RouteTable.Routes.Register();   
  10.  } 

代碼下載地址

/tandly/MvcRouteHelper.rar

原文標題:ASP.NET MVC路由規則XML化

鏈接:http://www.cnblogs.com/tandly/archive/2010/03/10/1682301.html

【編輯推薦】

  1. 專訪微軟MVP衣明志:走進ASP.NET MVC 2框架開發
  2. 詳解ASP.NET MVC 2中強類型HTML輔助方法
  3. ASP.NET MVC 2 RC版全新發布 增強HTML控制
  4. 詳解ASP.NET MVC 2自定義驗證
  5. 詳解ASP.NET MVC對表進行通用的增刪改 
     
責任編輯:彭凡 來源: 博客園
相關推薦

2009-07-31 12:43:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 15:02:02

ASP.NET MVC

2009-04-08 09:58:07

ASP.NET MVCTempData框架

2009-07-20 10:33:02

ASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC

2009-08-04 17:28:45

Apache支持ASP

2014-08-21 09:31:06

路由

2009-07-24 10:55:00

asp.net mvc

2009-07-23 15:11:43

XML Web服務方法ASP.NET

2009-07-27 15:34:11

MembershipASP.NET

2009-07-27 10:18:12

TypeResolveASP.NET

2009-08-05 18:36:12

ASP.NET Che

2009-07-24 13:41:15

ASP.NET AJA

2009-08-05 15:50:13

ASP.NET優點

2009-07-27 09:29:38

ASP.NET中Jav

2009-09-24 09:26:22

ASP.NET MVC

2009-07-24 10:53:51

ASP.NET實現靜態

2009-07-20 16:09:39

2009-11-02 10:15:53

ASP.NET MVC
點贊
收藏

51CTO技術棧公眾號

99久久99久久精品免费观看| 黄色成人在线网站| 91麻豆精品国产自产在线| 最新国产精品久久| 欧美 中文字幕| 日本vs亚洲vs韩国一区三区| 欧美久久精品一级黑人c片| 99re久久精品国产| 看片一区二区| 狠狠躁夜夜躁人人躁婷婷91| 中文精品一区二区三区| 五月天婷婷视频| 久久99精品国产麻豆不卡| 91精品国产高清| 曰本女人与公拘交酡| 你懂的一区二区三区| 欧美一区二区免费视频| 成人在线看视频| 怡红院在线观看| 国产日韩欧美一区二区三区综合| 福利视频久久| 一区二区不卡视频在线观看| 国产精品久久久久9999高清| 麻豆国产精品va在线观看不卡| 扒开jk护士狂揉免费| 日韩一区网站| 欧美丰满高潮xxxx喷水动漫| 亚洲乱码国产一区三区| 久久男人av资源站| 一区二区三区在线视频播放| 先锋影音亚洲资源| 男男激情在线| 97se狠狠狠综合亚洲狠狠| 亚洲jizzjizz日本少妇| 中文字幕人妻色偷偷久久| 亚洲美女黄色| 欧美精品videossex88| 欧美特级一级片| 欧美r级电影| 国产亚洲欧美一区| 88久久精品无码一区二区毛片| 国产精品对白久久久久粗| 日韩一区二区在线播放| 中文字幕第17页| 69堂精品视频在线播放| 色94色欧美sute亚洲线路一久 | 欧美日韩国产亚洲一区| www.国产精品一二区| 精品人体无码一区二区三区| 免费视频一区三区| 一个色综合导航| av网站免费在线看| 欧洲乱码伦视频免费| 亚洲人成电影网| 国产一二三四五区| 精品一二三区| 久久精品国产91精品亚洲| 特级西西人体高清大胆| 久久国产亚洲精品| 久久久久北条麻妃免费看| 久久高清内射无套| 欧美不卡一区| 欧美精品videossex性护士| 国产第一页在线播放| 精品福利电影| 51ⅴ精品国产91久久久久久| 国产精品suv一区| 日韩精品国产精品| 91色精品视频在线| 亚洲第一精品网站| 99在线热播精品免费| 久久伦理网站| av电影在线观看网址| 亚洲人亚洲人成电影网站色| 91午夜在线观看| 第一福利在线视频| 欧美丝袜第三区| 丰满少妇中文字幕| 露出调教综合另类| 在线观看欧美日韩国产| 丝袜美腿小色网| 日韩午夜精品| 国产精品旅馆在线| www男人的天堂| 久久综合999| 伊人久久大香线蕉成人综合网| 午夜av在线免费观看| 精品国产91久久久久久老师| 色诱视频在线观看| 中文一区二区三区四区| 亚洲欧美国产制服动漫| 国产激情无码一区二区三区| 在线精品亚洲| 国产欧美一区二区三区四区| 亚洲美女性生活| 国产人成一区二区三区影院| 五月天在线免费视频| 色戒汤唯在线| 欧美一级生活片| 3d动漫精品啪啪一区二区下载| 欧美电影一区| 97在线看福利| 国产日产亚洲系列最新| 久久在线免费观看| 国产精品88久久久久久妇女 | 你懂的亚洲视频| 欧美一级黄色网| 精品国产999久久久免费| 久久日韩粉嫩一区二区三区| 四虎精品欧美一区二区免费| 久久夜夜操妹子| 精品久久人人做人人爽| 老熟妇高潮一区二区三区| 模特精品在线| 国产精品对白一区二区三区| 夜级特黄日本大片_在线| 亚洲成人资源在线| 亚洲毛片在线看| 亚洲黄色免费在线观看| 一区二区三区毛片免费| 国产精品爽黄69天堂a| 亚洲欧美一区二区三| 一区二区三区高清| 国产亚洲视频一区| 欧美日韩有码| 日本精品视频在线| 天天操天天干天天| 亚洲成av人片| 中文字幕无人区二| 亚洲国产精品91| 国产欧美精品一区二区三区介绍| 欧美精品少妇| 精品久久久久久| 挪威xxxx性hd极品| 欧美午夜一区二区福利视频| 国产日韩精品在线播放| 97电影在线看视频| 欧美羞羞免费网站| 国产一区二区三区精品在线| 久久xxxx精品视频| 久久久亚洲综合网站| 性爽视频在线| 亚洲人成欧美中文字幕| 一级成人黄色片| 久久影院视频免费| 欧美精品色婷婷五月综合| 希岛爱理av免费一区二区| 97色在线播放视频| 青青久在线视频| 欧美午夜丰满在线18影院| 性欧美成人播放77777| 国产精品综合| 日本精品二区| 黄色成人小视频| 久久精品国产99国产精品澳门| 91黄色在线视频| 亚洲激情图片一区| 超碰caoprom| 香蕉久久a毛片| 欧洲av一区| 欧美与亚洲与日本直播| 最新的欧美黄色| 99久久精品国产色欲| 亚洲一二三级电影| yy6080午夜| 日韩中文字幕亚洲一区二区va在线| 日韩和欧美的一区二区| 视频欧美精品| 欧美交受高潮1| 国产在线网站| 91精品国产黑色紧身裤美女| 精国产品一区二区三区a片| 豆国产96在线|亚洲| 国产午夜福利100集发布| 亚洲免费专区| 国产在线观看精品一区二区三区| 中文字幕在线观看播放| 亚洲精品国产精品乱码不99按摩| 国产精品视频一区在线观看| 国产精品视频你懂的| 日本少妇xxx| 国产欧美日韩一区二区三区在线| 日本一区二区精品视频| 成人综合日日夜夜| 国产91成人在在线播放| 欧美性videos| 亚洲国产一区自拍| 在线播放一级片| 亚洲一二三区不卡| 四虎国产成人精品免费一女五男| 国产不卡免费视频| 亚洲一区二区蜜桃| 激情综合自拍| 一区二区三区国| 欧美精品国产白浆久久久久| 国产精品一区二区三区成人| 1区2区3区在线| 在线视频免费一区二区| 天天操天天干天天爱| 6080yy午夜一二三区久久| 中文字幕亚洲精品一区| 综合激情成人伊人| 少妇真人直播免费视频| 国产精品996| 天天视频天天爽| 亚洲永久免费精品| 日韩成人午夜影院| 欧美va久久久噜噜噜久久| 麻豆av福利av久久av| 日本99精品| 国产精品专区第二| 欧美gay囗交囗交| 久久久久久尹人网香蕉| 国产成人在线视频免费观看| 亚洲色图校园春色| 亚洲色图狠狠干| 日韩欧美一级在线播放| 亚洲系列第一页| 日本久久电影网| 天天综合天天干| 婷婷国产在线综合| 精品无码m3u8在线观看| 亚洲人成网站精品片在线观看| 少妇精品无码一区二区免费视频| 91亚洲精品久久久蜜桃网站 | 久久久国产成人精品| 蜜桃免费在线| 精品一区二区电影| 日韩一级片免费| 亚洲成人1234| 黄色片一区二区三区| 日韩一卡二卡三卡| 国产精选久久久| 欧美嫩在线观看| ,亚洲人成毛片在线播放| 欧美色图在线观看| 中文字幕 自拍偷拍| 欧洲精品中文字幕| 五月天中文字幕| 欧美在线free| 这里只有精品6| 欧美精品久久99久久在免费线| 亚洲在线精品视频| 欧美精品v国产精品v日韩精品| 一级片视频播放| 在线电影一区二区三区| 国产美女主播在线观看| 欧美一区二区三区视频在线 | 不卡亚洲精品| 国产精品免费一区豆花| 欧美性生活一级| 91精品视频免费观看| 国产乱码精品一区二区三区亚洲人| 成人精品久久一区二区三区| 日本免费一区二区视频| 不卡视频一区| 另类春色校园亚洲| 日韩精品资源| 999国产精品永久免费视频app| 伊人久久婷婷色综合98网| 欧美69wwwcom| 国产96在线 | 亚洲| 久久国产成人| 中文字幕av专区| 国产精品资源网站| 国产精品一区二区无码对白| 91日韩精品一区| 国产成人免费观看网站| 亚洲日韩欧美一区二区在线| 久久久久久久久久久久久久久久久| 午夜一区二区三区在线观看| 国产在线观看黄色| 欧美日韩一区精品| 亚洲第一免费视频| 亚洲欧美日韩成人| 国产黄色小视频在线| 午夜精品福利视频| 99精品国自产在线| 国产成人免费电影| 国产精品亚洲二区| 国产911在线观看| 国产精品久久久免费| 亚洲天堂网一区| 丰满岳乱妇一区二区三区| 爱爱免费小视频| 成人免费视频在线观看| 在线观看精品国产| 欧美丰满美乳xxx高潮www| 性猛交xxxx| 久久亚洲电影天堂| 一区二区电影免费观看| 亚洲精品日韩激情在线电影| 亚洲成人一品| 天天综合五月天| 日韩一区精品视频| 欧美xxxxx少妇| 国产精品久久99| www.av麻豆| 欧美一区二区大片| 国产日本在线观看| 欧美精品国产精品日韩精品| 国产成人福利夜色影视| 精品国产乱码久久久久久88av| 欧美成人精品一区二区三区在线看| www..com日韩| 韩国精品久久久| 在线免费观看视频| 高潮白浆女日韩av免费看| 99热这里只有精品在线| 中文国产亚洲喷潮| 一个人www视频在线免费观看| 91成人免费在线观看| 成人同人动漫免费观看| 国内性生活视频| 国产suv精品一区二区三区| 午夜国产福利视频| 在线观看视频一区二区欧美日韩| 六月丁香综合网| 欧美日韩国产123| 99精品国产九九国产精品| 日韩欧美一区二区在线观看| 中文亚洲欧美| 久久久久成人精品无码中文字幕| 亚洲男人的天堂在线aⅴ视频| 中文字幕视频二区| 国产亚洲成精品久久| 亚洲精品一区| 久久久www免费人成黑人精品| 激情久久五月| 人妻av一区二区三区| 亚洲精品国产成人久久av盗摄| 中文字幕在线观看视频一区| 一区二区三区视频在线| 日日夜夜天天综合| 特级西西444www大精品视频| 男人的天堂亚洲| 99久久久无码国产精品性| 色综合天天综合网天天看片| 深夜福利视频在线免费观看| 国外成人在线视频| 久久av国产紧身裤| 欧美 国产 综合| 久久亚洲综合色| 黄色大片网站在线观看| 国产丝袜视频一区| 日韩免费电影| 四虎一区二区| 久久se精品一区二区| 日本在线一级片| 日韩欧美国产电影| 超碰在线最新网址| 久久精品aaaaaa毛片| 模特精品在线| 国产免费嫩草影院| 在线综合+亚洲+欧美中文字幕| 国产精品久久久久久福利| 成人网在线观看| 狠狠色狠狠色综合日日tαg| 超碰男人的天堂| 欧美在线一区二区三区| 国产淫片在线观看| 国产99在线播放| 校园春色综合网| 日韩精品电影一区二区三区| 8x8x8国产精品| 大黄网站在线观看| 青青草原亚洲| 国产一二三精品| 九九热国产视频| 亚洲天堂男人天堂| 国产精品igao视频网网址不卡日韩| 国产 欧美 日本| 久久综合九色综合欧美亚洲| 中文字幕永久在线视频| 久久这里有精品视频| 精品资源在线| 亚洲精品自拍网| 亚洲午夜国产一区99re久久| 噜噜噜在线观看播放视频| 国产欧美日韩综合精品| 国产精品99免费看| 国产免费无遮挡吸奶头视频| 日韩情涩欧美日韩视频| 久久人体大尺度| 在线视频福利一区| 99re免费视频精品全部| 在线观看免费黄色小视频| 久久久久久成人精品| 精品国产乱码| japan高清日本乱xxxxx| 色婷婷综合五月| 黄污视频在线观看| 亚洲精品视频一二三| 成人av资源网站| 国产精品视频一区二区三区,| 97在线精品视频| 综合精品久久| 成人小视频免费看| 亚洲国产99精品国自产| 久久91视频|