婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ASP.NET MVC5網站開發修改及刪除文章(十)

ASP.NET MVC5網站開發修改及刪除文章(十)

熱門標簽:海東防封電銷卡 南昌自動外呼系統線路 上海市三維地圖標注 聊城智能電銷機器人電話 云南外呼系統代理 寧德防封版電銷卡 西寧電銷外呼系統公司 安陸市地圖標注app 辦公用地圖標注網點怎么操作

上次做了顯示文章列表,再實現修改和刪除文章這部分內容就結束了,這次內容比較簡單,由于做過了添加文章,修改文章非常類似,就是多了一個TryUpdateModel部分更新模型數據。
一、刪除文章
由于公共模型跟,文章,附件有關聯,所以這里的刪除次序很重要,如果先刪除模型,那么文章ModelID和附件的ModelID多會變成null,所以要先先刪除文章和附件再刪除公共模型。

由于公共模型和附件是一對多的關系,我們把刪除公共模型和刪除附件寫在一起。

在BLL的BaseRepository類中有默認的Delete方法,但這個方法中僅刪除模型,不會刪除外鍵,所以在CommonModelRepository在new一個出來封印掉默認的方法。

public new bool Delete(Models.CommonModel commonModel, bool isSave = true)
  {
   if (commonModel.Attachment != null) nContext.Attachments.RemoveRange(commonModel.Attachment);
   nContext.CommonModels.Remove(commonModel);
   return isSave ? nContext.SaveChanges() > 0 : true;
  }

這個的意思是封印掉繼承的Delete方法,在新的方法中如果存在附加那么先刪除附件,再刪除公共模型。那么如果我們還想調用基類的Delete方法怎么辦?可以用base.Delete。

好了,現在可以開始刪除了。

在ArticleController中添加Delete方法

/// summary>
  /// 刪除
  /// /summary>
  /// param name="id">文章id/param>
  /// returns>/returns>
  public JsonResult Delete(int id)
  {
   //刪除附件
   var _article = articleService.Find(id);
   if(_article == null) return Json(false);
   //附件列表
   var _attachmentList = _article.CommonModel.Attachment;
   var _commonModel = _article.CommonModel;
   //刪除文章
   if (articleService.Delete(_article))
   {
    //刪除附件文件
    foreach (var _attachment in _attachmentList)
    {
     System.IO.File.Delete(Server.MapPath(_attachment.FileParth));
    }
    //刪除公共模型
    commonModelService.Delete(_commonModel);
    return Json(true);
   }
   else return Json(false);
  }

二、修改文章
這個部分跟添加文章非常類似
首先在ArticleController中添加顯示編輯視圖的Edit

/// summary>
  /// 修改
  /// /summary>
  /// param name="id">/param>
  /// returns>/returns>
  public ActionResult Edit(int id)
  {
   return View(articleService.Find(id));
  }

右鍵添加視圖,這個跟添加類似,沒什么好說的直接上代碼

@section scripts{
 script type="text/javascript" src="~/Scripts/KindEditor/kindeditor-min.js">/script>
 script type="text/javascript">
  //編輯框
  KindEditor.ready(function (K) {
   window.editor = K.create('#Content', {
    height: '500px',
    uploadJson: '@Url.Action("Upload", "Attachment")',
    fileManagerJson: '@Url.Action("FileManagerJson", "Attachment", new { id = @Model.CommonModel.ModelID })',
    allowFileManager: true,
    formatUploadUrl: false
   });
  //首頁圖片
   var editor2 = K.editor({
    fileManagerJson: '@Url.Action("FileManagerJson", "Attachment", new {id=@Model.CommonModel.ModelID })'
   });
   K('#btn_picselect').click(function () {
    editor2.loadPlugin('filemanager', function () {
     editor2.plugin.filemanagerDialog({
      viewType: 'VIEW',
      dirName: 'image',
      clickFn: function (url, title) {
       var url;
       $.ajax({
        type: "post",
        url: "@Url.Action("CreateThumbnail", "Attachment")",
        data: { originalPicture: url },
        async: false,
        success: function (data) {
         if (data == null) alert("生成縮略圖失敗!");
         else {
          K('#CommonModel_DefaultPicUrl').val(data);
          K('#imgpreview').attr("src", data);
         }
         editor2.hideDialog();
        }
       });
      }
     });
    });
   });
  });
 /script>
}

@model Ninesky.Models.Article
@using (Html.BeginForm())
{ @Html.AntiForgeryToken()
 div class="form-horizontal" role="form">
  h4>添加文章/h4>
  hr />
  @Html.ValidationSummary(true)
  div class="form-group">
   label class="control-label col-sm-2" for="CommonModel_CategoryID">欄目/label>
   div class="col-sm-10">
    input id="CommonModel_CategoryID" name="CommonModel.CategoryID" data-options="url:'@Url.Action("JsonTree", "Category", new { model="Article" })'" class="easyui-combotree" style="height: 34px; width: 280px;" value="@Model.CommonModel.CategoryID" />
      @Html.ValidationMessageFor(model => model.CommonModel.CategoryID)/div>
  /div>
  div class="form-group">
   @Html.LabelFor(model => model.CommonModel.Title, new { @class = "control-label col-sm-2" })
   div class="col-sm-10">
      @Html.TextBoxFor(model => model.CommonModel.Title, new { @class = "form-control" })
      @Html.ValidationMessageFor(model => model.CommonModel.Title)/div>
  /div>


  div class="form-group">
   @Html.LabelFor(model => model.Author, new { @class = "control-label col-sm-2" })
   div class="col-sm-10">
    @Html.TextBoxFor(model => model.Author, new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.Author)
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.Source, new { @class = "control-label col-sm-2" })
   div class="col-sm-10">
    @Html.TextBoxFor(model => model.Source, new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.Source)
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.Intro, new { @class = "control-label col-sm-2" })
   div class="col-sm-10">
    @Html.TextAreaFor(model => model.Intro, new { @class = "form-control" })
    @Html.ValidationMessageFor(model => model.Intro)
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.Content, new { @class = "control-label col-sm-2" })
   div class="col-sm-10">
    @Html.EditorFor(model => model.Content)
    @Html.ValidationMessageFor(model => model.Content)
   /div>
  /div>

  div class="form-group">
   @Html.LabelFor(model => model.CommonModel.DefaultPicUrl, new { @class = "control-label col-sm-2" })
   div class="col-sm-10">
    img id="imgpreview" class="thumbnail" src="@Model.CommonModel.DefaultPicUrl" />
    @Html.HiddenFor(model => model.CommonModel.DefaultPicUrl)
    a id="btn_picselect" class="easyui-linkbutton">選擇…/a>
    @Html.ValidationMessageFor(model => model.CommonModel.DefaultPicUrl)
   /div>
  /div>

  div class="form-group">
   div class="col-sm-offset-2 col-sm-10">
    input type="submit" value="保存" class="btn btn-default" />
   /div>
  /div>
 /div>
}

開始做后臺接受代碼,在ArticleController中添加如下代碼。

[HttpPost]
  [ValidateInput(false)]
  [ValidateAntiForgeryToken]
  public ActionResult Edit()
  {
   int _id = int.Parse(ControllerContext.RouteData.GetRequiredString("id"));
   var article = articleService.Find(_id);
   TryUpdateModel(article, new string[] { "Author", "Source", "Intro", "Content" });
   TryUpdateModel(article.CommonModel, "CommonModel", new string[] { "CategoryID", "Title", "DefaultPicUrl" });
   if(ModelState.IsValid)
   {
    if (articleService.Update(article))
    {
     //附件處理
     InterfaceAttachmentService _attachmentService = new AttachmentService();
     var _attachments = _attachmentService.FindList(article.CommonModel.ModelID, User.Identity.Name, string.Empty,true).ToList();
     foreach (var _att in _attachments)
     {
      var _filePath = Url.Content(_att.FileParth);
      if ((article.CommonModel.DefaultPicUrl != null  article.CommonModel.DefaultPicUrl.IndexOf(_filePath) >= 0) || article.Content.IndexOf(_filePath) > 0)
      {
       _att.ModelID = article.ModelID;
       _attachmentService.Update(_att);
      }
      else
      {
       System.IO.File.Delete(Server.MapPath(_att.FileParth));
       _attachmentService.Delete(_att);
      }
     }
     return View("EditSucess", article);
    }
   }
   return View(article);
  }

詳細講解一下吧:

1、[ValidateInput(false)] 表示不驗證輸入內容。因為文章內容包含html代碼,防止提交失敗。

2、[ValidateAntiForgeryToken]是為了防止偽造跨站請求的,也就說只有本真的請求才能通過。

見圖中的紅線部分,在試圖中構造驗證字符串,然后再后臺驗證。

3、public ActionResult Edit()。看這個方法沒有接收任何數據,我們再方法中使用TryUpdateModel更新模型。因為不能完全相信用戶,比如如果用戶構造一個CateggoryID過來,就會把文章發布到其他欄目去。

這個是在路由中獲取id參數

再看這兩行,略有不同
第一行直接更新article模型。第一個參數是要更新的模型,第二個參數是更新的字段。
第二行略有不同,增加了一個前綴參數,我們看視圖生成的代碼 @Html.TextBoxFor(model => model.CommonModel.Title 是帶有前綴CommonModel的。所以這里必須使用前綴來更新視圖。

三、修改文章列表
寫完文章后,就要更改文章列表代碼用來刪除和修改文章。
打開List視圖,修改部分由2處。
1、js腳本部分

script type="text/javascript">
 $("#article_list").datagrid({
  loadMsg: '加載中……',
  pagination:true,
  url: '@Url.Action("JsonList","Article")',
  columns: [[
   { field: 'ModelID', title: 'ID', checkbox: true },
   { field: 'CategoryName', title: '欄目'},
   { field: 'Title', title: '標題'},
   { field: 'Inputer', title: '錄入', align: 'right' },
   { field: 'Hits', title: '點擊', align: 'right' },
   { field: 'ReleaseDate', title: '發布日期', align: 'right', formatter: function (value, row, index) { return jsonDateFormat(value); } },
   { field: 'StatusString', title: '狀態', width: 100, align: 'right' }
  ]],
  toolbar: '#toolbar',
  idField: 'ModelID',
  onDblClickRow: function (rowIndex, rowData) { window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rowData.ModelID, "icon-page"); }
 });
 //查找
 $("#btn_search").click(function () {
  $("#article_list").datagrid('load', {
   title: $("#textbox_title").val(),
   input: $("#textbox_inputer").val(),
   category: $("#combo_category").combotree('getValue'),
   fromDate: $("#datebox_fromdate").datebox('getValue'),
   toDate: $("#datebox_todate").datebox('getValue')
  });
 });

 //修改事件
 function eidt() {
  var rows = $("#article_list").datagrid("getSelections");
  if (!rows || rows.length  1) {
   $.messager.alert("提示", "請選擇要修改的行!");
   return;
  }
  else if (rows.length != 1) {
   $.messager.alert("提示", "僅能選擇一行!");
   return;
  }
  else {
   window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rows[0].ModelID, "icon-page");
  }
 }
 //刪除
 function del()
 {
  var rows = $("#article_list").datagrid("getSelections");
  if (!rows || rows.length  1) {
   $.messager.alert("提示", "未選擇任何行!");
   return;
  }
  else if (rows.length > 0) {
   $.messager.confirm("確認", "您確定要刪除所選行嗎?", function (r) {
    if (r) {
     $.messager.progress();
     $.each(rows, function (index, value) {
      $.ajax({
       type: "post",
       url: "@Url.Action("Delete", "Article")",
       data: { id: value.ModelID },
       async: false,
       success: function (data) {
       }
      });
     });
     $.messager.progress('close');
     //清除選擇行
     rows.length = 0;
     $("#article_list").datagrid('reload');
    }
   });
   return;
  }
 }
/script>

增加了修改方法、刪除方法,在datagrid里添加行雙擊進入修改視圖的方法

onDblClickRow: function (rowIndex, rowData) { window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rowData.ModelID, "icon-page"); }

2、

四、我的文章列表
我的文章列表與全部文章類似,并簡化掉了部分內容那個,更加簡單,直接上代碼了
Article控制器中添加

/// summary>
  /// 文章列表Json【注意權限問題,普通人員是否可以訪問?】
  /// /summary>
  /// param name="title">標題/param>
  /// param name="input">錄入/param>
  /// param name="category">欄目/param>
  /// param name="fromDate">日期起/param>
  /// param name="toDate">日期止/param>
  /// param name="pageIndex">頁碼/param>
  /// param name="pageSize">每頁記錄/param>
  /// returns>/returns>
  public ActionResult JsonList(string title, string input, Nullableint> category, NullableDateTime> fromDate, NullableDateTime> toDate, int pageIndex = 1, int pageSize = 20)
  {
   if (category == null) category = 0;
   int _total;
   var _rows = commonModelService.FindPageList(out _total, pageIndex, pageSize, "Article", title, (int)category, input, fromDate, toDate, 0).Select(
    cm => new Ninesky.Web.Models.CommonModelViewModel() 
    { 
     CategoryID = cm.CategoryID,
     CategoryName = cm.Category.Name,
     DefaultPicUrl = cm.DefaultPicUrl,
     Hits = cm.Hits,
     Inputer = cm.Inputer,
     Model = cm.Model,
     ModelID = cm.ModelID,
     ReleaseDate = cm.ReleaseDate,
     Status = cm.Status,
     Title = cm.Title 
    });
   return Json(new { total = _total, rows = _rows.ToList() });
  }

  public ActionResult MyList()
  {
   return View();
  }

  /// summary>
  /// 我的文章列表
  /// /summary>
  /// param name="title">/param>
  /// param name="fromDate">/param>
  /// param name="toDate">/param>
  /// param name="pageIndex">/param>
  /// param name="pageSize">/param>
  /// returns>/returns>
  public ActionResult MyJsonList(string title, NullableDateTime> fromDate, NullableDateTime> toDate, int pageIndex = 1, int pageSize = 20)
  {
   int _total;
   var _rows = commonModelService.FindPageList(out _total, pageIndex, pageSize, "Article", title, 0, string.Empty, fromDate, toDate, 0).Select(
    cm => new Ninesky.Web.Models.CommonModelViewModel()
    {
     CategoryID = cm.CategoryID,
     CategoryName = cm.Category.Name,
     DefaultPicUrl = cm.DefaultPicUrl,
     Hits = cm.Hits,
     Inputer = cm.Inputer,
     Model = cm.Model,
     ModelID = cm.ModelID,
     ReleaseDate = cm.ReleaseDate,
     Status = cm.Status,
     Title = cm.Title
    });
   return Json(new { total = _total, rows = _rows.ToList() }, JsonRequestBehavior.AllowGet);
  }
為MyList右鍵添加視圖
div id="toolbar">
 div>
  a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-edit',plain:true" onclick="eidt()">修改/a>
  a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="del()">刪除/a>
  a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-reload',plain:true" onclick="$('#article_list').datagrid('reload');">刷新/a>
 /div>
 div class="form-inline">
  label>標題/label> input id="textbox_title" class="input-easyui" style="width:280px" />
  label>添加日期/label>
  input id="datebox_fromdate" type="datetime" class="easyui-datebox" style="width:120px" /> -
  input id="datebox_todate" type="datetime" class="easyui-datebox" style="width:120px; " />
  a href="#" id="btn_search" data-options="iconCls:'icon-search'" class="easyui-linkbutton">查詢/a>
 /div>

/div>
table id="article_list">/table>
script src="~/Scripts/Common.js">/script>
script type="text/javascript">
 $("#article_list").datagrid({
  loadMsg: '加載中……',
  pagination:true,
  url: '@Url.Action("MyJsonList", "Article")',
  columns: [[
   { field: 'ModelID', title: 'ID', checkbox: true },
   { field: 'CategoryName', title: '欄目'},
   { field: 'Title', title: '標題'},
   { field: 'Inputer', title: '錄入', align: 'right' },
   { field: 'Hits', title: '點擊', align: 'right' },
   { field: 'ReleaseDate', title: '發布日期', align: 'right', formatter: function (value, row, index) { return jsonDateFormat(value); } },
   { field: 'StatusString', title: '狀態', width: 100, align: 'right' }
  ]],
  toolbar: '#toolbar',
  idField: 'ModelID',
  onDblClickRow: function (rowIndex, rowData) { window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rowData.ModelID, "icon-page"); }
 });
 //查找
 $("#btn_search").click(function () {
  $("#article_list").datagrid('load', {
   title: $("#textbox_title").val(),
   fromDate: $("#datebox_fromdate").datebox('getValue'),
   toDate: $("#datebox_todate").datebox('getValue')
  });
 });

 //修改事件
 function eidt() {
  var rows = $("#article_list").datagrid("getSelections");
  if (!rows || rows.length  1) {
   $.messager.alert("提示", "請選擇要修改的行!");
   return;
  }
  else if (rows.length != 1) {
   $.messager.alert("提示", "僅能選擇一行!");
   return;
  }
  else {
   window.parent.addTab("修改文章", "@Url.Action("Edit","Article")/" + rows[0].ModelID, "icon-page");
  }
 }
 //刪除
 function del()
 {
  var rows = $("#article_list").datagrid("getSelections");
  if (!rows || rows.length  1) {
   $.messager.alert("提示", "未選擇任何行!");
   return;
  }
  else if (rows.length > 0) {
   $.messager.confirm("確認", "您確定要刪除所選行嗎?", function (r) {
    if (r) {
     $.messager.progress();
     $.each(rows, function (index, value) {
      $.ajax({
       type: "post",
       url: "@Url.Action("Delete", "Article")",
       data: { id: value.ModelID },
       async: false,
       success: function (data) {
       }
      });
     });
     $.messager.progress('close');
     //清除選擇行
     rows.length = 0;
     $("#article_list").datagrid('reload');
    }
   });
   return;
  }
 }
/script>

要注意的是刪除文章時刪除的次序,修改文章時TryUpdateModel的使用,希望本文對大家的學習有所幫助。

您可能感興趣的文章:
  • ASP.NET MVC5網站開發管理列表、回復及刪除(十三)
  • ASP.NET MVC5網站開發我的咨詢列表及添加咨詢(十二)
  • ASP.NET MVC5網站開發添加文章(八)
  • ASP.NET MVC5網站開發文章管理架構(七)
  • ASP.NET MVC5網站開發用戶修改資料和密碼(六)
  • ASP.NET MVC5網站開發用戶登錄、注銷(五)
  • ASP.NET MVC5網站開發用戶注冊(四)
  • ASP.NET MVC5網站開發項目框架(二)
  • ASP.NET MVC5網站開發概述(一)
  • MVC4制作網站教程第三章 刪除用戶組操作3.4

標簽:衢州 平涼 汕尾 南寧 青海 洛陽 贛州 崇左

巨人網絡通訊聲明:本文標題《ASP.NET MVC5網站開發修改及刪除文章(十)》,本文關鍵詞  ASP.NET,MVC5,網站開發,修改,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC5網站開發修改及刪除文章(十)》相關的同類信息!
  • 本頁收集關于ASP.NET MVC5網站開發修改及刪除文章(十)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产午夜精品福利| 国产精品视频看| 欧美α欧美αv大片| 一区二区激情小说| 91丝袜国产在线播放| 久久综合五月天婷婷伊人| 亚洲精品中文在线影院| 福利一区福利二区| 国产精品久久久久久久蜜臀| 欧美不卡激情三级在线观看| www国产精品av| 午夜精品影院在线观看| www.亚洲人| 亚洲综合色区另类av| 欧美在线制服丝袜| 日韩激情视频在线观看| 亚洲三级在线免费| 亚洲免费在线观看视频| 色偷偷成人一区二区三区91| 韩国欧美国产一区| 国产校园另类小说区| 中文欧美字幕免费| 亚洲精品视频在线| 亚洲成人在线网站| 蜜桃av一区二区在线观看| 国产在线精品国自产拍免费| 国产麻豆91精品| 成熟亚洲日本毛茸茸凸凹| 色天使久久综合网天天| 这里是久久伊人| 国产精品久久久久久久浪潮网站| 亚洲男人都懂的| 国产一区二区在线观看免费| 国产69精品久久777的优势| 91久久精品一区二区三| 欧美精品 国产精品| 国产精品第一页第二页第三页| 七七婷婷婷婷精品国产| 国产精品羞羞答答xxdd| 欧美性欧美巨大黑白大战| 久久理论电影网| 亚洲福利一区二区三区| 国产suv精品一区二区883| 欧美日韩一区二区三区四区| 久久夜色精品国产噜噜av| 亚洲免费在线观看视频| 国产1区2区3区精品美女| 欧美一区二区三区日韩| 亚洲一级片在线观看| a级精品国产片在线观看| 日韩视频在线你懂得| 亚洲免费在线电影| 91视视频在线直接观看在线看网页在线看| 欧美老年两性高潮| 亚洲成人在线观看视频| 欧美写真视频网站| 亚洲国产你懂的| 亚洲第一会所有码转帖| 久久精品亚洲麻豆av一区二区 | 亚洲国产精品黑人久久久| 久久99国产精品麻豆| 欧美精品一区二区三区久久久 | 五月激情综合婷婷| 99久久婷婷国产综合精品| 国产喷白浆一区二区三区| 国产一区激情在线| 久久精品人人做人人爽人人| 国内精品伊人久久久久av影院| 亚洲精品在线网站| 成人一道本在线| 亚洲精品网站在线观看| 欧美日韩久久久久久| 国产原创一区二区| 亚洲你懂的在线视频| 欧美一区二区啪啪| 国产精品99久久不卡二区| 亚洲青青青在线视频| 欧美精品久久天天躁| 国产剧情在线观看一区二区| 综合欧美一区二区三区| 日韩一二在线观看| 国产成人免费xxxxxxxx| 亚洲高清视频的网址| 久久久五月婷婷| 欧美日韩你懂的| 精品国产人成亚洲区| 国产综合久久久久久鬼色| 亚洲视频一区二区在线观看| 欧美一卡2卡3卡4卡| 色婷婷亚洲婷婷| 成人精品小蝌蚪| 韩国三级电影一区二区| 秋霞成人午夜伦在线观看| 尤物在线观看一区| 久久久久亚洲蜜桃| 日韩欧美成人激情| 日本网站在线观看一区二区三区 | 在线亚洲免费视频| 成人国产精品免费观看动漫| 久久激情五月激情| 日韩在线a电影| 日韩福利电影在线| 秋霞成人午夜伦在线观看| 日韩视频不卡中文| 视频一区中文字幕| 午夜亚洲国产au精品一区二区| 一区二区三区在线影院| 亚洲欧美日韩电影| 一级日本不卡的影视| 亚洲永久免费av| 亚洲国产日韩a在线播放性色| 一区2区3区在线看| 亚洲综合在线电影| 日韩有码一区二区三区| 激情文学综合插| 成人午夜av在线| 色婷婷久久久久swag精品| 91在线视频官网| 欧美一区二区三区视频免费| 亚洲6080在线| 国产成人丝袜美腿| 成人性生交大片免费看中文| 在线视频中文字幕一区二区| 91麻豆精品国产91久久久久久久久 | 91网站最新地址| 欧美日韩亚州综合| 久久综合九色综合97婷婷女人 | 精品久久人人做人人爱| 国产精品美女www爽爽爽| 一区二区三区不卡视频| 天天亚洲美女在线视频| 国产老妇另类xxxxx| 91精品国产乱码| 一区二区三区不卡在线观看| 久久99精品久久久| 欧美三区在线观看| 自拍视频在线观看一区二区| 精品在线一区二区| 精品视频1区2区| 亚洲男人的天堂在线aⅴ视频| 国产精品一区二区久久不卡| 午夜精品久久久久久久蜜桃app| 成人污视频在线观看| 日韩欧美一区在线观看| 丝袜a∨在线一区二区三区不卡| 91小视频免费看| 亚洲色欲色欲www| 东方欧美亚洲色图在线| 久久久久久9999| 丰满少妇久久久久久久| 91精品国产综合久久久久久久| 成人午夜电影网站| 欧美mv日韩mv国产网站app| 五月激情综合婷婷| 欧美在线观看一二区| 亚洲国产aⅴ天堂久久| 欧美日韩国产美女| 视频在线在亚洲| 精品国产乱码久久久久久1区2区| 欧美一区二区三区四区视频| 制服丝袜亚洲色图| 久久精品国产秦先生| 欧美电影免费观看高清完整版在线观看| 日产国产高清一区二区三区| 日韩精品一区二区三区在线观看| 韩国成人精品a∨在线观看| 久久久久久久久岛国免费| 色综合激情久久| 精久久久久久久久久久| 国产精品毛片大码女人| 91老师国产黑色丝袜在线| 日韩中文字幕一区二区三区| 久久久久久亚洲综合| 97精品久久久久中文字幕| 日韩精品一二三四| 国产精品久久久久久久久免费樱桃| 色88888久久久久久影院野外| 亚洲午夜免费电影| 中文字幕免费不卡| 日韩免费观看高清完整版 | 免费人成网站在线观看欧美高清| 精品久久99ma| 色婷婷一区二区三区四区| 日本午夜精品一区二区三区电影| 国产日产精品1区| 欧美羞羞免费网站| 99久久久无码国产精品| 久久黄色级2电影| 日韩激情av在线| caoporm超碰国产精品| 老司机一区二区| 亚洲成人三级小说| 亚洲高清免费一级二级三级| 久久久久国产精品厨房| 亚洲成人av在线电影| 亚洲乱码国产乱码精品精可以看 | 国产一区二区免费看| 日韩高清一级片| 日本vs亚洲vs韩国一区三区二区| 亚洲欧美另类小说|