午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > ASP.NET MVC4使用MongoDB制作相冊管理

ASP.NET MVC4使用MongoDB制作相冊管理

熱門標簽:電話機器人鑰匙扣 漯河外呼調研線路 廣西房產智能外呼系統推薦 400電話唐山辦理 地圖標注位置怎么弄圖 電銷專用外呼線路 威力最大的電銷機器人 電銷外呼系統是違法的嗎 旅游地圖標注線路

ASP.NET MVC4使用MongoDB制作相冊管理實例分享

TIPS:1.Image轉成Base64保存到mongodb字段
         2.數據模型是嵌套的關聯 

首先定義Model層: 

 public class Photo : IEquatablePhoto>
 {
  [Required]
  public string PhotoName { get; set; }


  [Required]
  public string PhotoDescription { get; set; }


  public string ServerPath { get; set; }


  public Photo() { }


  public Photo(string name, string desc)
  {
   PhotoName = name;
   PhotoDescription = desc;
  }


  public bool Equals(Photo other)
  {
   return string.Equals(PhotoName, other.PhotoName);
  }
 }
 
 
public interface IAlbumIterable
 {
  bool HasNext();
  Photo Current();
  Photo Next();
 } 
 
 
 public interface IPhotosAggregable
 {
  IAlbumIterable GetIterator();
 }


 public class AlbumIterator : IAlbumIterable
 {
  private Album collection;
  private int count;


  public AlbumIterator(Album album)
  {
   collection = album;
  }


  public Photo Current()
  {
   if (count  collection.Count)
    return collection[count++];
   else
    throw new IndexOutOfRangeException();
  }


  public bool HasNext()
  {
   if (count  collection.Count - 1)
    return true;
   else
    return false;
  }


  public Photo Next()
  {
   if (HasNext())
    return collection[++count];
   else
    throw new IndexOutOfRangeException();
  }
 } 
 public class Album : IPhotosAggregable
 {
  [BsonId]
  public ObjectId Id { get; set; }


  [Required]
  public string Name { get; set; }


  [Required]
  public string Description { get; set; }


  public string Owner { get; set; }
  public Photo TitlePhoto { get; set; }


  [BsonDateTimeOptions(Kind = DateTimeKind.Local,Representation =BsonType.DateTime)]
  public DateTime CreationTime { get; set; }
  public IListPhoto> Pictures { get; set; }


  public Album() { Pictures = new ListPhoto>(); TitlePhoto = new Photo(); }
  public Album(string name, string owner, Photo pic)
  {
   Name = name;
   Owner = owner;
   TitlePhoto = pic;
   Pictures = new ListPhoto>();
   TitlePhoto = new Photo();
  }


  public bool InsertPicture(Photo pic)
  {
   if (!Pictures.Contains(pic))
   {
    Pictures.Add(pic);
    return true;
   }
   else
    throw new ArgumentException();
  }


  public bool InsertPictures(ListPhoto> photos)
  {
   foreach(var photo in photos)
   {
    if (!Pictures.Contains(photo))
    {
     Pictures.Add(photo);
    }
    else
     throw new ArgumentException();
   }
   return true;
  }


  public bool RemovePicture(Photo pic)
  {
    Pictures.Remove(pic);
    return true;
  }


  public int Count
  {
   get { return Pictures.Count; }
  }


  public Photo this[int index]
  {
   get { return Pictures[index]; }
   set { Pictures[index] = value; }
  }


  public IAlbumIterable GetIterator()
  {
   return new AlbumIterator(this);
  }
 }

 Services層的MongoAlbumPerformer.cs和ServerPathFinder.cs代碼如下: 

 public class MongoAlbumPerformer
 {
  protected static IMongoClient client;
  protected static IMongoDatabase database;
  private static IMongoCollectionAlbum> collection;
  private string collectionName;

  public MongoAlbumPerformer(string databaseName, string collectionName)
  {
   
   client = new MongoClient(ConfigurationManager.ConnectionStrings["mongoDB"].ConnectionString);
   database = client.GetDatabase(databaseName);
   this.collectionName = collectionName;
   collection = database.GetCollectionAlbum>(collectionName, new MongoCollectionSettings { AssignIdOnInsert = true });
  }

  public void SetCollection(string collectionName)
  {
   this.collectionName = collectionName;
   collection = database.GetCollectionAlbum>(collectionName);
  }

  public void CreateAlbum(Album album)
  {
   var document = new Album
   {
    Name = album.Name,
    Owner = HttpContext.Current.User.Identity.Name,
    Description = album.Description,
    CreationTime = DateTime.Now,
    TitlePhoto = album.TitlePhoto,
    Pictures = album.Pictures
   };

   collection.InsertOne(document);
  }

  public ListAlbum> GetAlbumsByUserName(string username)
  {
   var projection = BuildersAlbum>.Projection
    .Include(a => a.Name)
    .Include(a => a.Description)
    .Include(a => a.TitlePhoto)
    .Include(a=>a.CreationTime);

   var result = collection
    .Find(a => a.Owner == HttpContext.Current.User.Identity.Name)
    .ProjectAlbum>(projection).ToList();

   return result;
  }

  public Album GetPicturesByAlbumName(string albumName)
  {
   var projection = BuildersAlbum>.Projection
    .Include(a => a.Pictures);

   var result = collection
    .Find(a => a.Owner == HttpContext.Current.User.Identity.Name  a.Name == albumName)
    .ProjectAlbum>(projection).FirstOrDefault();

   return result;
  }

  public void UpdateAlbumAddPhoto(string albumName, Photo photo)
  {
   var builder = BuildersAlbum>.Filter;
   var filter = builder.Eq(f => f.Name, albumName)  builder.Eq(f => f.Owner, HttpContext.Current.User.Identity.Name);
   var result = collection.Find(filter).FirstOrDefault();

   if (result == null)
    throw new ArgumentException("No album of supplied name: {0}", albumName);
   else
   {
      var picture = new Photo
      {
       PhotoName = photo.PhotoName,
       PhotoDescription = photo.PhotoDescription,
       ServerPath = photo.ServerPath,
      };

      var update = BuildersAlbum>.Update.Push(a => a.Pictures, picture);
      collection.UpdateOne(filter, update, new UpdateOptions { IsUpsert=true });
   }
  }

  public void DeletePhotoFromAlbum(string albumName, string photoName)
  {
   var builder = BuildersAlbum>.Filter;
   var filter = builder.Eq(f => f.Name, albumName)  builder.Eq(f => f.Owner, HttpContext.Current.User.Identity.Name);
   var result = collection.Find(filter).SingleOrDefault();

   if (result == null)
    throw new ArgumentException("No album of supplied name: {0}", albumName);
   else
   {
    var update = BuildersAlbum>.Update
     .PullFilter(a => a.Pictures, BuildersPhoto>.Filter.Eq(p => p.PhotoName, photoName));
    long count = collection.UpdateOne(filter, update).MatchedCount;
   }
  }
 }public class ServerPathFinder
 {
  public string GetBase64ImageString(HttpPostedFileBase file)
  {
   string mime = Regex.Match(file.ContentType, @"(?=image/)\w+").Value;
   byte[] bytes = new byte[file.ContentLength];
   file.InputStream.Read(bytes, 0, file.ContentLength);
   return string.Format("data:image/{0};base64,{1}",mime, Convert.ToBase64String(bytes));
  }
 }

AlbumController.cs代碼如下: 

 public class AlbumController : Controller
 {
  MongoAlbumPerformer mongod = new MongoAlbumPerformer("test","albums");

  [HttpPost]
  public ActionResult AlbumPreview(Photo model, HttpPostedFileBase file, string albumName, string delete, string phot)
  {
   if (delete == "false")
   {
    if (file != null)
    {
     if (!file.ContentType.StartsWith("image"))
     {
      ModelState.AddModelError("file", "選擇正確的格式照片!");
     }
     else
     {
      ServerPathFinder finder = new ServerPathFinder();
      model.ServerPath = finder.GetBase64ImageString(file);
     }

     if (ModelState.IsValid)
     {
      mongod.UpdateAlbumAddPhoto(albumName, model);
      ModelState.Clear();
     }
    }
   }
   else
   {
    mongod.DeletePhotoFromAlbum(albumName, phot);
    foreach(var error in ModelState.Values)
    {
     error.Errors.Clear();
    }
   }
   ViewBag.AlbumTitle = albumName;
   ViewBag.PhotoList = mongod.GetPicturesByAlbumName(albumName).Pictures;

   return View();
  }

  public ActionResult AlbumPreview(string Name)
  {
   var album = mongod.GetPicturesByAlbumName(Name);
   ViewBag.AlbumTitle = Name;
   ViewBag.PhotoList = album.Pictures;

   return View();
  }

  [HttpPost]
  public ActionResult Create(Album model, HttpPostedFileBase file)
  {
   if (!file.ContentType.StartsWith("image"))
   {
    ModelState.AddModelError("file", "選擇正確的格式照片!");
   }
   else
   {
    ServerPathFinder finder = new ServerPathFinder();
    model.TitlePhoto.ServerPath = finder.GetBase64ImageString(file);    
   }

   if (ModelState.IsValid)
   {
    model.Owner = HttpContext.User.Identity.Name;
    mongod.CreateAlbum(model);
   }
   var albums = mongod.GetAlbumsByUserName(HttpContext.User.Identity.Name);
   ViewBag.Albums = albums;

   return View();
  }

  public ActionResult Create()
  {
   var albums = mongod.GetAlbumsByUserName(HttpContext.User.Identity.Name);
   ViewBag.Albums = albums;
   return View();
  }
 } 

部分view視圖:
 Create.cshtml 

@{
 ViewBag.Title = "Create";
}

h2>我的相冊/h2>

@Html.Partial("_MyAlbums", (ListAlbum>)ViewBag.Albums)

@using (Html.BeginForm("Create", "Album", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{
 @Html.AntiForgeryToken()
 
 div class="form-horizontal">
  h4>創建新相冊: /h4>
  hr />
  @Html.ValidationSummary(true, "", new { @class = "text-danger" })
  div class="form-group">
   @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.TitlePhoto, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    input type="file" name="file" id="file" style="width: 100%;" data-val="true" data-val-required="要求標題圖片."/>
    @Html.ValidationMessage("file",new { @class = "text-danger" })
   /div>
  /div>
  
  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>
}

@section scripts{
 @Scripts.Render("~/bundles/jqueryval")

 script type="text/javascript">
  $('img').click(function (data) {

  });

 /script>
}AlbumPreview.cshtml
 @{
 ViewBag.Title = "AlbumPreview";
}

@using (Html.BeginForm("AlbumPreview", "Album", FormMethod.Post, new { enctype = "multipart/form-data"}))
{
 @Html.AntiForgeryToken()

 {Html.RenderPartial("_Preview", (ListPhoto>)ViewBag.PhotoList);}

 div class="form-horizontal">
  br />
  h4>添加新的照片:/h4>
  hr />
  @Html.ValidationSummary(true, "", new { @class = "text-danger" })

  div class="form-group">
   @Html.LabelFor(model => model.PhotoName, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.PhotoName, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.PhotoName, "", new { @class = "text-danger" })
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.PhotoDescription, htmlAttributes: new { @class = "control-label col-md-2" })
   div class="col-md-10">
    @Html.EditorFor(model => model.PhotoDescription, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.PhotoDescription, "", new { @class = "text-danger" })
   /div>
  /div>

  div class="form-group">
   label class="control-label col-md-2">選擇照片:/label>
   div class="col-md-10">
    input type="file" name="file" id="file" style="width: 100%;" data-val="true" data-val-required="請選擇圖像" />
    @Html.ValidationMessage("file", new { @class = "text-danger" })
   /div>
  /div>

  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>
 input type="hidden" name="albumName" id="albumName" value="@ViewBag.AlbumTitle" />
 input type="hidden" name="delete" id="delete" value="false" />
 input type="hidden" name="phot" id="phot" value="sraka" />
}

@section scripts{
 @Scripts.Render("~/bundles/jqueryval")

 script type="text/javascript">
  $(document).ready(function () {
   var elements = document.getElementsByClassName("btn btn-xs btn-warning cancel");
   for (var i = 0, len = elements.length; i  len; i++) {
    elements[i].addEventListener("click", function () {
     $('#delete').val(true);
     var name = $(this).attr("id");
     $('#phot').val(name);
     $('#' + name).click();
    });
   }
  })
 /script>
}_Preview.cshtml
 @{
 ViewBag.Title = "_Preview";
}

h2>Album span style="color:royalblue;font-style:italic">@ViewBag.AlbumTitle/span>/h2>

div class="row">
@foreach (var photo in Model)
{
 div class="col-md-3">
  input type="submit" id="@photo.PhotoName" value="刪除" class="btn btn-xs btn-warning cancel" style="text-align:center;float:right" />
  img src="@photo.ServerPath" class="img-responsive img-thumbnail col-md-3" style="width:100%;height:180px" />
  label style="text-align:center;width:100%">@Html.DisplayNameFor(phot=>phot.PhotoName): @photo.PhotoName/label>
  label style="text-align:center;width:100%;font-weight:100">@photo.PhotoDescription/label>
 /div>
}
/div>

運行項目結果如圖:

首頁創建相冊:


《車》相冊下的圖片示例,可以增加圖片,刪除圖片


《QQ》相冊下的圖片示例


mongodb數據存儲結構圖:


以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • .NET連接MongoDB數據庫實例教程
  • MongoDB.NET 2.2.4驅動版本對Mongodb3.3數據庫中GridFS增刪改查
  • 在.Net中使用MongoDB的方法教程

標簽:湖北 無錫 湘西 焦作 銅陵 綏化 欽州 試駕邀約

巨人網絡通訊聲明:本文標題《ASP.NET MVC4使用MongoDB制作相冊管理》,本文關鍵詞  ASP.NET,MVC4,使用,MongoDB,制作,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC4使用MongoDB制作相冊管理》相關的同類信息!
  • 本頁收集關于ASP.NET MVC4使用MongoDB制作相冊管理的相關信息資訊供網民參考!
  • 推薦文章
    国产精品无码一本二本三本色| 亚洲风情第一页| 日韩精品最新网址| aaaaaaaa毛片| 精品欧美一区二区三区免费观看| 日本高清不卡的在线| 国产乱码精品一区二区三区五月婷 | 一区二区三区偷拍| 亚洲视频在线观看| 青娱乐精品视频| 成人h视频在线| 国产精品99久久久久久久女警| 草草草在线视频| 少妇视频一区二区| 久久亚洲国产精品日日av夜夜| 国产网红主播福利一区二区| 热久久精品免费视频| 91欧美一区二区| 一本一道久久a久久精品综合 | 女教师淫辱の教室蜜臀av软件| 不卡视频在线播放| 18久久久久久| 免费在线不卡av| 免费av一区二区| 精品成人av一区二区在线播放| 亚洲最新中文字幕| 国产性生活网站| 中文字幕亚洲无线码a| 一级黄色录像视频| 中文字幕亚洲欧美日韩在线不卡| 久草视频手机在线观看| 日韩中文字幕欧美| 国产又大又黄视频| 隔壁老王国产在线精品| 无码人妻一区二区三区线| 操人视频在线观看欧美| 欧美一级黄视频| 欧美一二三视频| 国产男女裸体做爰爽爽| 国产精品日韩在线观看| 亚洲av成人精品一区二区三区在线播放 | 国产综合香蕉五月婷在线| 国产又大又长又粗| 国产欧美日韩精品专区| 日产国产欧美视频一区精品| 久久99热只有频精品91密拍| 国产精品亚洲专一区二区三区 | 欧美精品久久久久久久免费| 中文字幕不卡的av| 精品国产乱码久久久久久郑州公司| 中文字幕免费看| 538在线一区二区精品国产| 久久久久亚洲AV成人网人人小说| 欧美日韩一区二区三区四区 | 欧产日产国产69| 91精品国产高清久久久久久91| 国产精品色综合| 国产在线日韩在线| 精品写真视频在线观看| 曰韩不卡视频| 亚洲一区二区av电影| 精品国产鲁一鲁一区二区三区| 欧美怡红院视频| 国产传媒在线看| 久久综合伊人77777| 97人妻精品一区二区三区软件| 成人福利网站在线观看| 成人综合在线观看| 日韩中字在线观看| 在线观看中文字幕不卡| 乱老熟女一区二区三区| 久久久免费在线观看| 亚洲日本在线播放| 天堂√在线观看一区二区| 亚洲精品欧美在线| 亚洲熟妇无码av| 超薄丝袜一区二区| 日韩高清欧美激情| 337p亚洲精品色噜噜狠狠p| 日韩欧美在线看| 免费高清在线观看电视| 欧美孕妇毛茸茸xxxx| 精品夜夜嗨av一区二区三区| 国产极品尤物在线| 91精品国产91久久综合桃花| 天天操天天摸天天干| 亚洲v日韩v综合v精品v| 欧美激情资源网| 午夜不卡久久精品无码免费| 久久天堂av综合合色| 天堂av手机版| 最新中文字幕久久| 欧美三级乱人伦电影| 欧美又粗又大又长| 成人激情免费在线| 中文字幕乱码亚洲精品一区| 午夜久久久久久久| 欧美福利视频在线| 国产一区二区三区在线观看免费| 国产一区二区女| 欧美亚洲精品日韩| 欧美日韩国产一区中文午夜| 欧美日韩国产精品一区二区三区| 国产精品爽爽爽| 欧美激情一区在线| 伊人网在线视频观看| 69久久夜色精品国产69| 99久久精品一区| 国产精品一区二区无码对白| 欧美激情亚洲另类| 不卡的看片网站| 制服丝袜在线第一页| 国内揄拍国内精品少妇国语| www.成人在线| 亚洲欧美在线不卡| 国产不卡精品视男人的天堂| 亚洲国产精品成人综合色在线婷婷 | 国精品**一区二区三区在线蜜桃| 成人精品视频一区二区| 亚洲天堂av女优| 奇米亚洲午夜久久精品| 在线观看国产福利| 欧美激情一二三| 91香蕉视频污| 战狼4完整免费观看在线播放版| 国产精品视频一| 亚洲欧美日韩电影| 久久精品视频日本| 日本一区二区在线视频观看| 欧美精品亚洲二区| 亚洲福利在线观看视频| 青青艹视频在线| 最近中文字幕mv在线一区二区三区四区| 精品一区二区三区av| 免费欧美一级片| 日本一区二区在线播放| 亚洲精品国产精品乱码不99| 亚洲免费在线观看av| 少妇熟女一区二区| 一本一道久久a久久精品逆3p | 国产一区二区在线观看免费播放 | www欧美在线| 国产精品国产精品| 亚洲黄色小视频| 五月婷婷开心网| 色香蕉在线观看| 亚洲成人精品av| 国产美女娇喘av呻吟久久| 亚洲视频在线播放免费| 成人午夜小视频| 91成人国产精品| 天堂网av2014| 99精品视频免费版的特色功能| 日本亚洲欧洲色| 婷婷中文字幕综合| 国产三区在线播放| 伊人网在线综合| 国产男人精品视频| 国产伦精品一区二区三区视频网站 | www日韩在线| 亚洲一区二区三区免费观看| 国产香蕉一区二区三区在线视频| av亚洲精华国产精华精| 国产精品50页| 内射国产内射夫妻免费频道| 欧美一区视频在线| 男人操女人的视频在线观看欧美| 国产精品va在线播放我和闺蜜| 一区二区中文视频| 秋霞av一区二区三区| 亚洲人精品午夜射精日韩| 久久99精品视频一区97| 亚洲乱码一区二区三区在线观看| 中文字幕有码视频| 五月激情婷婷在线| 99精品国产高清一区二区| 67194成人在线观看| 国产一区在线不卡| 久久午夜鲁丝片午夜精品| a级免费在线观看| 国产九九视频一区二区三区| 国产精品入口夜色视频大尺度 | 色妞一区二区三区| 国产精品福利影院| 国产高清第一页| 下面一进一出好爽视频| 国产麻豆一区二区三区在线观看| 日韩av在线网址| 国产亚洲视频系列| 国产女人18毛片水真多| 日韩免费高清一区二区| 翔田千里亚洲一二三区| 国产69精品久久久久9| 91成人看片片| 91污在线观看| 97精品人妻一区二区三区在线| 中文字幕资源在线观看| 欧美xxxx黑人又粗又长精品| 成年人精品视频| 欧美在线视频全部完| 国产成人亚洲精品青草天美| 亚洲精品国产欧美在线观看| 18禁一区二区三区| 亚洲va韩国va欧美va精四季| 欧美性视频精品| 精品久久久久久久久久久久久久久 | 激情小说欧美色图| 中文字幕一区二区三区四区五区六区 | 国产91在线播放九色| 欧美色图另类小说| 国产一区视频观看| 久久久免费观看视频| 日韩精品在线一区| 一区二区三区成人| 国产东北露脸精品视频| 97超碰资源站| av成人免费网站| 深爱五月综合网| 免费久久久久久| 国产精品欧美激情在线播放| 亚洲香蕉成视频在线观看 | 日本va欧美va国产激情| 国产a级片视频| 日韩xxxx视频| 国产一区免费视频| 欧洲精品毛片网站| 日韩精品在线影院| 91激情在线视频| 97在线精品视频| 永久免费未视频| a级精品国产片在线观看| 欧美写真视频网站| 在线视频欧美日韩| 91午夜视频在线观看| 国产三级在线观看视频| 亚洲色图丝袜美腿| 欧美极品少妇xxxxⅹ喷水| 亚洲国产精品一区二区第四页av| 宅男在线精品国产免费观看| 中文字幕中文字幕一区三区| 一级特黄性色生活片| 亚洲av成人片色在线观看高潮| 日韩av手机在线免费观看| 国产成人亚洲精品自产在线| 国产免费的av| 久草这里只有精品视频| 99r国产精品| 欧美视频在线免费| 亚洲精品视频二区| 国产精品美女在线观看| 日韩少妇中文字幕| 免费一级特黄毛片| 亚洲精品在线网址| 免费在线观看黄色av| 老司机午夜福利视频| 91原创在线视频| 这里只有精品在线播放| 国产精品自拍偷拍| 日韩av影视| 97在线免费视频观看| av动漫在线免费观看| 免费黄色在线播放| 黄瓜视频在线免费观看| 久久久久久色| 国产精品亲子伦对白| 亚洲片av在线| 国产美女搞久久| 黄色一级视频播放| 一级日韩一级欧美| 久久综合狠狠综合久久综青草 | 天天久久人人| 激情五月综合色婷婷一区二区| 91精品国产综合久久男男 | 欧美国产禁国产网站cc| 在线观看中文字幕码| 成人动漫精品一区二区| 欧美富婆性猛交| 黄色一级视频片| 777奇米成人网| 日韩美女视频在线观看| 女人床在线观看| 韩国三级在线看| 国产视频手机在线观看| 亚洲精品国产成人久久av盗摄| 精品噜噜噜噜久久久久久久久试看 | 欧美三级蜜桃2在线观看| 中文国产成人精品久久一| 国产午夜精品在线| 久久av红桃一区二区禁漫| 久久久久久久久毛片| 少妇一级淫片免费看| 国产午夜亚洲精品不卡| 欧美日韩亚洲网| 欧美精品中文字幕一区| 亚洲综合在线中文字幕| 欧美中文字幕在线观看视频| 91精品国产高清一区二区三蜜臀| 丁香啪啪综合成人亚洲小说| 日韩精品专区在线影院观看| 国内精品国语自产拍在线观看| 久久视频免费看| av亚洲产国偷v产偷v自拍| 国产精品一区二区三| 天堂av手机版| 精品久久久久成人码免费动漫| 精品人妻一区二区三区三区四区| www.污视频| 日韩电影免费在线看| 九九视频精品免费| 成人黄色av网站在线| 国产日韩成人精品| 一区二区免费看| 日本道精品一区二区三区| 欧美一级精品大片| 亚洲男人第一av网站| 久久久久北条麻妃免费看| 69久久夜色精品国产69| 成人午夜高潮视频| 欧美综合激情| cao在线观看| 玖玖爱视频在线| 久久丫精品国产亚洲av不卡| 国产精品成人在线视频| 国产精品成人免费一区二区视频| 亚洲欧美日韩一区二区三区四区| 99久久精品国产色欲| 日韩av电影天堂| 99国产精品99久久久久久| 亚洲日本va午夜在线影院| 一本色道**综合亚洲精品蜜桃冫| 欧美一卡在线观看| yw.139尤物在线精品视频| 日本精品一区二区三区在线播放视频| 亚洲自拍另类欧美丝袜| 在线精品亚洲一区二区| 日本xxxx黄色| 黄色国产在线播放| 自拍偷拍18p| 日本va欧美va精品| 欧美激情中文不卡| 欧美性大战久久久久久久| 亚洲人成在线播放| 青草热久免费精品视频| 久久亚洲综合网| 青青艹视频在线| 少妇特黄一区二区三区| 久久不卡免费视频| 亚洲欧洲精品视频| 久久久99精品免费观看| 欧美天堂在线观看| 亚洲人午夜精品免费| 国产精品扒开腿做爽爽爽的视频| 欧美日韩亚洲在线| 亚洲精品一二三四五区| 久久精品色妇熟妇丰满人妻| 一本色道久久综合无码人妻| 麻豆免费看一区二区三区| 亚洲免费资源在线播放| 欧美大片一区二区三区| 性色av一区二区三区在线观看| 韩国一区二区三区美女美女秀 | 正在播放一区二区三区| 日本中文字幕观看| 国产精品不卡av| 老司机精品视频在线| 亚洲少妇30p| 日韩精品日韩在线观看| 国产日韩欧美另类| 青青草成人免费在线视频| 免费黄色在线视频| av一区二区三| 日本一区二区三区dvd视频在线 | 99热这里只有精| 久久久久亚洲综合| 日韩精品专区在线影院重磅| 国产精品流白浆视频| www.国产在线视频| 午夜国产福利视频| 石原莉奈一区二区三区在线观看| 亚洲美女淫视频| 中文字幕久久久| 久久影视中文粉嫩av| 国产精品日日摸夜夜爽| 91精品人妻一区二区三区果冻| 久久五月婷婷丁香社区| 欧美xxx久久| 亚洲影影院av| 在线能看的av网站| 中文字幕亚洲乱码熟女1区2区| gogogo免费视频观看亚洲一| 91精品国产综合久久福利| 国产精品久久久久久一区二区| 国产精品视频网站在线观看| 色欲狠狠躁天天躁无码中文字幕 | 欧美蜜桃一区二区三区| 欧美中文在线观看国产| 麻豆tv在线播放| 国产特黄大片aaaa毛片| 97se亚洲国产综合自在线不卡| 日韩欧美专区在线| 国产精品美女诱惑| 91精品啪在线观看国产| 亚洲成人黄色片| 亚洲成在线观看| 国内外成人免费激情在线视频网站| 91黄色在线看| 特级毛片www| 久久久一区二区三区| 亚洲香蕉av在线一区二区三区| 午夜欧美一区二区三区免费观看|