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

主頁 > 知識庫 > ASP.NET MVC5網站開發添加文章(八)

ASP.NET MVC5網站開發添加文章(八)

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

一、添加文章
1、KindEditor富文本編輯器

到官方網站http://kindeditor.net/down.php下載最新版本,解壓后把代碼復制到項目的Scripts文件夾下。

2、添加界面的顯示。

在ArticleController中添加Add 方法

/// summary>
  /// 添加文章
  /// /summary>
  /// returns>視圖頁面/returns>
  public ActionResult Add()
  {
   return View();
  }

右鍵添加Article的強類型視圖,代碼如下

@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'
   });
  });
 /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;" />
      @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="" />
    @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>
}


效果如圖

3、后臺接受的處理。

[ValidateInput(false)]
  [HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult Add(Article article)
  {
   if(ModelState.IsValid)
   {
    //設置固定值
    article.CommonModel.Hits = 0;
    article.CommonModel.Inputer = User.Identity.Name;
    article.CommonModel.Model = "Article";
    article.CommonModel.ReleaseDate = System.DateTime.Now;
    article.CommonModel.Status = 99;
    article = articleService.Add(article);
    if (article.ArticleID > 0)
    {
     return View("AddSucess", article);
    }
   }
   return View(article);
  }


在做架構的時候DAL、BLL的base類里有Add方法,我們可以直接使用ArticleService.Add方法添加到數據庫

添加文章功能就實現了,但是不能上傳附件,不能選擇首頁圖片,不能刪除多余的附件。下面就來實現附件功能。

二、附件上傳
目標可以上傳附件(圖片,文件等),文件保存到上傳目錄中,且數據庫中保存相應記錄,可以瀏覽文件列表,未使用的附件可以刪除記錄。

一、添加附件

在AttachmentController添加Upload()方法,方法方法把文件寫入磁盤中把附件的記錄也保存到數據庫中,中間會用到讀取配置文件,見《.Net MVC 網站中配置文件的讀寫》。

/// summary>
  /// 上傳附件
  /// /summary>
  /// returns>/returns>
  public ActionResult Upload()
  {
   var _uploadConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~").GetSection("UploadConfig") as Ninesky.Models.Config.UploadConfig;
   //文件最大限制
   int _maxSize = _uploadConfig.MaxSize;
   //保存路徑
   string _savePath;
   //文件路徑
   string _fileParth = "~/" + _uploadConfig.Path + "/";
   //文件名
   string _fileName;
   //擴展名
   string _fileExt;
   //文件類型
   string _dirName;
   //允許上傳的類型
   Hashtable extTable = new Hashtable();
   extTable.Add("image", _uploadConfig.ImageExt);
   extTable.Add("flash", _uploadConfig.FileExt);
   extTable.Add("media", _uploadConfig.MediaExt);
   extTable.Add("file", _uploadConfig.FileExt);
   //上傳的文件
   HttpPostedFileBase _postFile = Request.Files["imgFile"];
   if (_postFile == null) return Json(new { error = '1', message = "請選擇文件" });
   _fileName = _postFile.FileName;
   _fileExt = Path.GetExtension(_fileName).ToLower();
   //文件類型
   _dirName = Request.QueryString["dir"];
   if (string.IsNullOrEmpty(_dirName))
   {
    _dirName = "image";
   }
   if (!extTable.ContainsKey(_dirName)) return Json(new { error = 1, message = "目錄類型不存在" });
   //文件大小
   if (_postFile.InputStream == null || _postFile.InputStream.Length > _maxSize) return Json(new { error = 1, message = "文件大小超過限制" });
   //檢查擴展名
   if (string.IsNullOrEmpty(_fileExt) || Array.IndexOf(((string)extTable[_dirName]).Split(','), _fileExt.Substring(1).ToLower()) == -1) return Json(new { error = 1, message = "不允許上傳此類型的文件。 \n只允許" + ((String)extTable[_dirName]) + "格式。" });
   _fileParth += _dirName + "/" + DateTime.Now.ToString("yyyy-MM") + "/";
   _savePath = Server.MapPath(_fileParth);
   //檢查上傳目錄
   if (!Directory.Exists(_savePath)) Directory.CreateDirectory(_savePath);
   string _newFileName = DateTime.Now.ToString("yyyyMMdd_hhmmss") + _fileExt;
    _savePath += _newFileName;
    _fileParth += _newFileName;
   //保存文件
   _postFile.SaveAs(_savePath);
   //保存數據庫記錄
   attachmentService.Add(new Attachment() { Extension = _fileExt.Substring(1), FileParth = _fileParth, Owner = User.Identity.Name, UploadDate = DateTime.Now, Type = _dirName });
   return Json(new { error = 0, url = Url.Content(_fileParth) });
  }


二、查詢附件列表

打開InterfaceAttachmentService接口,添加兩個方法,都進行了注釋比較容易理解,直接上代碼。

/// summary>
  /// 查找附件列表
  /// /summary>
  /// param name="modelID">公共模型ID/param>
  /// param name="owner">所有者/param>
  /// param name="type">類型/param>
  /// returns>/returns>
  IQueryableModels.Attachment> FindList(Nullableint> modelID, string owner, string type);
  /// summary>
  /// 查找附件列表
  /// /summary>
  /// param name="modelID">公共模型ID/param>
  /// param name="owner">所有者/param>
  /// param name="type">所有者/param>
  /// param name="withModelIDNull">包含ModelID為Null的/param>
  /// returns>/returns>
  IQueryableModels.Attachment> FindList(int modelID, string owner, string type,bool withModelIDNull);

AttachmentService中寫現實代碼

public IQueryableModels.Attachment> FindList(Nullableint> modelID, string owner, string type)
  {
   var _attachemts = CurrentRepository.Entities.Where(a => a.ModelID == modelID);
   if (!string.IsNullOrEmpty(owner)) _attachemts = _attachemts.Where(a => a.Owner == owner);
   if (!string.IsNullOrEmpty(type)) _attachemts = _attachemts.Where(a => a.Type == type);
   return _attachemts;
  }

  public IQueryableModels.Attachment> FindList(int modelID, string owner, string type, bool withModelIDNull)
  {
   var _attachemts = CurrentRepository.Entities;
   if (withModelIDNull) _attachemts = _attachemts.Where(a => a.ModelID == modelID || a.ModelID == null);
   else _attachemts = _attachemts.Where(a => a.ModelID == modelID);
   if (!string.IsNullOrEmpty(owner)) _attachemts = _attachemts.Where(a => a.Owner == owner);
   if (!string.IsNullOrEmpty(type)) _attachemts = _attachemts.Where(a => a.Type == type);
   return _attachemts;
  }

由于KindEditor文件管理需要從服務器獲取json格式文件列表,在Ninesky.Web.Areas.Member.Models中單獨給列表格式寫個視圖模型。AttachmentManagerViewModel

namespace Ninesky.Web.Areas.Member.Models
{
 /// summary>
 /// KindEditor文件管理中文件視圖模型
 /// remarks>
 /// 創建:2014.03.09
 /// /remarks>
 /// /summary>
 public class AttachmentManagerViewModel
 {
  public bool is_dir{get;set;}
  public bool has_file {get;set;}
  public int filesize {get;set;}
  public bool is_photo{get;set;}
  public string filetype{get;set;}
  public string filename{get;set;}
  public string datetime { get; set; }
 }
}

在AttachmentController添加返回文件列表的方法FileManagerJson。方法供KindEditor的文件管理器調用

/// summary>
  /// 附件管理列表
  /// /summary>
  /// param name="id">公共模型ID/param>
  /// param name="dir">目錄(類型)/param>
  /// returns>/returns>
  public ActionResult FileManagerJson(int? id ,string dir)
  {
   Models.AttachmentManagerViewModel _attachmentViewModel;
   IQueryableAttachment> _attachments;
   //id為null,表示是公共模型id為null,此時查詢數據庫中沒有跟模型對應起來的附件列表(以上傳,但上傳的文章……還未保存)
   if (id == null) _attachments = attachmentService.FindList(null, User.Identity.Name, dir);
   //id不為null,返回指定模型id和id為null(新上傳的)附件了列表
   else _attachments = attachmentService.FindList((int)id, User.Identity.Name, dir, true);
   //循環構造AttachmentManagerViewModel
   var _attachmentList = new ListModels.AttachmentManagerViewModel>(_attachments.Count());
   foreach(var _attachment in _attachments)
   {
    _attachmentViewModel = new Models.AttachmentManagerViewModel() { datetime = _attachment.UploadDate.ToString("yyyy-MM-dd HH:mm:ss"), filetype = _attachment.Extension, has_file = false, is_dir = false, is_photo = _attachment.Type.ToLower() == "image" ? true : false, filename = Url.Content(_attachment.FileParth) };
    FileInfo _fileInfo = new FileInfo(Server.MapPath(_attachment.FileParth));
    _attachmentViewModel.filesize = (int)_fileInfo.Length;
    _attachmentList.Add(_attachmentViewModel);
   }
   return Json(new { moveup_dir_path = "", current_dir_path = "", current_url = "", total_count = _attachmentList.Count, file_list = _attachmentList },JsonRequestBehavior.AllowGet);
  }

3、為圖片創建縮略圖

把創建縮略圖的方法寫著Common項目中

在Ninesky.Common的Picture類中添加方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Security.Cryptography;

namespace Ninesky.Common
{
 /// summary>
 /// 圖片相關
 /// remarks>
 /// 創建:2014.02.11
 /// /remarks>
 /// /summary>
 public class Picture
 {
  /// summary>
  /// 創建縮略圖
  /// /summary>
  /// param name="originalPicture">原圖地址/param>
  /// param name="thumbnail">縮略圖地址/param>
  /// param name="width">寬/param>
  /// param name="height">高/param>
  /// returns>是否成功/returns>
  public static bool CreateThumbnail(string originalPicture, string thumbnail, int width, int height)
  {
   //原圖
   Image _original = Image.FromFile(originalPicture);
   // 原圖使用區域
   RectangleF _originalArea = new RectangleF();
   //寬高比
   float _ratio = (float)width/height;
   if(_ratio > ((float)_original.Width/_original.Height))
   {
    _originalArea.X =0;
    _originalArea.Width = _original.Width;
    _originalArea.Height = _originalArea.Width / _ratio;
    _originalArea.Y = (_original.Height - _originalArea.Height) / 2;
   }
   else
   {
    _originalArea.Y = 0;
    _originalArea.Height = _original.Height;
    _originalArea.Width = _originalArea.Height * _ratio;
    _originalArea.X = (_original.Width - _originalArea.Width) / 2;
   }
   Bitmap _bitmap = new Bitmap(width, height);
   Graphics _graphics = Graphics.FromImage(_bitmap);
   //設置圖片質量
   _graphics.InterpolationMode = InterpolationMode.High;
   _graphics.SmoothingMode = SmoothingMode.HighQuality;
   //繪制圖片
   _graphics.Clear(Color.Transparent);
   _graphics.DrawImage(_original, new RectangleF(0, 0, _bitmap.Width, _bitmap.Height), _originalArea, GraphicsUnit.Pixel);
   //保存
   _bitmap.Save(thumbnail);
   _graphics.Dispose();
   _original.Dispose();
   _bitmap.Dispose();
   return true;
  }
 }
}

在AttachmentController添加生成縮略圖的action

/// summary>
  /// 創建縮略圖
  /// /summary>
  /// param name="originalPicture">原圖地址/param>
  /// returns>縮略圖地址。生成失敗返回null/returns>
  public ActionResult CreateThumbnail(string originalPicture)
  {
   //原圖為縮略圖直接返回其地址
   if (originalPicture.IndexOf("_s") > 0) return Json(originalPicture);
   //縮略圖地址
   string _thumbnail = originalPicture.Insert(originalPicture.LastIndexOf('.'), "_s");
   //創建縮略圖
   if (Common.Picture.CreateThumbnail(Server.MapPath(originalPicture), Server.MapPath(_thumbnail), 160, 120))
   {
    //記錄保存在數據庫中
    attachmentService.Add(new Attachment(){ Extension= _thumbnail.Substring(_thumbnail.LastIndexOf('.')+1), FileParth="~"+_thumbnail, Owner= User.Identity.Name, Type="image", UploadDate= DateTime.Now});
    return Json(_thumbnail);
   }
   return Json(null);
  }


三、整合
添加和上傳附件都做好了,現在把他們整合到一起,我們就可以上傳附件了。

打開Add視圖,在創建KindEditor位置添加腳本

現在打開瀏覽器就可以上傳和管理附件了

添加文章的最后一個字段是文章的默認首頁圖片,我希望點擊選擇按鈕,可以在已上傳中選擇圖片,并創建縮略圖。

那么在Add視圖里再彈出一個文件空間讓用戶選擇已上傳的文件,用戶選擇后講選擇的地址發送到服務器創建縮略圖,并返回縮略圖地址,然后將地址復制給隱藏表單,CommonModel_DefaultPicUrl,同事復制個img />的src屬性用來顯示圖片。Js代碼如下:

//首頁圖片
   var editor2 = K.editor({
    fileManagerJson: '@Url.Action("FileManagerJson", "Attachment")'
   });
   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();
        }
       });
      }
     });
    });
   });


看下效果

在保存文章的action中刪除未使用的附件

完整的Add方法代碼

[ValidateInput(false)]
  [HttpPost]
  [ValidateAntiForgeryToken]
  public ActionResult Add(Article article)
  {
   if(ModelState.IsValid)
   {
    //設置固定值
    article.CommonModel.Hits = 0;
    article.CommonModel.Inputer = User.Identity.Name;
    article.CommonModel.Model = "Article";
    article.CommonModel.ReleaseDate = System.DateTime.Now;
    article.CommonModel.Status = 99;
    article = articleService.Add(article);
    if (article.ArticleID > 0)
    {
     //附件處理
     InterfaceAttachmentService _attachmentService = new AttachmentService();
     //查詢相關附件
     var _attachments = _attachmentService.FindList(null, User.Identity.Name, string.Empty).ToList();
     //遍歷附件
     foreach(var _att in _attachments)
     {
      var _filePath = Url.Content(_att.FileParth);
      //文章首頁圖片或內容中使用了該附件則更改ModelID為文章保存后的ModelID
      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("AddSucess", article);
    }
   }
   return View(article);
  }

單純添加文章比較簡單,復雜點在上傳附件,瀏覽新添加的附件,刪除文章中未使用的附件及生成縮略圖上。KindEditor還支持批量上傳附件,由于批量上傳使用的swfupload,在提交時flash沒傳輸cookie到服務器,無法驗證用戶導致上傳失敗,暫時無法使用批量上傳,希望這篇文章可以對大家的學習有所幫助,大家可以結合小編之前發的文章進行學習,相信一定會有所收獲。

您可能感興趣的文章:
  • ASP.NET MVC5網站開發用戶登錄、注銷(五)
  • PHP MVC模式在網站架構中的實現分析
  • ASP.NET MVC5網站開發用戶注冊(四)
  • ASP.NET MVC5 網站開發框架模型、數據存儲、業務邏輯(三)
  • MVC4 網站發布(整理+部分問題收集和解決方案)
  • CodeIgniter php mvc框架 中國網站
  • PHP發明人談MVC和網站設計架構 貌似他不支持php用mvc
  • ASP.NET MVC5網站開發項目框架(二)
  • ASP.NET MVC5網站開發顯示文章列表(九)
  • 一步步打造簡單的MVC電商網站BooksStore(1)

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

巨人網絡通訊聲明:本文標題《ASP.NET MVC5網站開發添加文章(八)》,本文關鍵詞  ASP.NET,MVC5,網站開發,添加,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.NET MVC5網站開發添加文章(八)》相關的同類信息!
  • 本頁收集關于ASP.NET MVC5網站開發添加文章(八)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产亚洲精品免费| 777奇米四色成人影色区| 亚洲图片另类小说| 久久久久久久久久久久久夜| www.综合网.com| 国产精品不卡在线观看| 中文字幕av一区二区三区免费看 | 开心九九激情九九欧美日韩精美视频电影| 亚洲日本乱码在线观看| 国产精品久久久久久久裸模| 国产精品素人视频| 一区二区视频在线| 亚洲国产成人91porn| 亚洲成人av中文| 国产一区二区中文字幕| 欧美午夜影院一区| 精品国产免费一区二区三区四区| 亚洲午夜激情网站| 奇米色一区二区| 国产成人精品亚洲日本在线桃色| 在线电影欧美成精品| 欧美区一区二区三区| 欧美日韩激情一区| 久久午夜电影网| 天天操天天干天天综合网| 丁香婷婷综合激情五月色| 91精品福利在线| 国产日韩欧美不卡| 黑人巨大精品欧美一区| 在线成人免费视频| 亚洲欧美日韩系列| 日本亚洲一区二区| 色综合久久综合中文综合网| 亚洲一区二区三区中文字幕在线| 首页国产欧美久久| 在线看日本不卡| 精品在线视频一区| 亚洲夂夂婷婷色拍ww47| 精品久久国产字幕高潮| 91美女精品福利| 国产乱色国产精品免费视频| 国产高清成人在线| 亚洲国产精品黑人久久久 | 成人av小说网| 日韩欧美亚洲国产精品字幕久久久| 91行情网站电视在线观看高清版| 人人狠狠综合久久亚洲| 91浏览器打开| 91在线看国产| 国产.欧美.日韩| 国产电影一区二区三区| 麻豆国产欧美日韩综合精品二区| 麻豆国产精品一区二区三区| 国产精品伦理一区二区| 91激情在线视频| 国产裸体歌舞团一区二区| 亚洲最大成人网4388xx| 精品国产123| 色哟哟国产精品免费观看| 五月天激情综合网| 在线免费视频一区二区| 国产精品美女一区二区三区| 风流少妇一区二区| 亚洲男人的天堂一区二区 | 色乱码一区二区三区88 | 欧美一区二区三区在线视频| 日韩经典中文字幕一区| www.99精品| 久久成人免费网| 久久色视频免费观看| 日韩欧美一区二区三区在线| 亚洲欧美色一区| 国产日韩亚洲欧美综合| 欧美区一区二区三区| 在线观看欧美黄色| 丁香亚洲综合激情啪啪综合| 欧美日韩免费高清一区色橹橹| 国产高清亚洲一区| 偷拍一区二区三区四区| 99国产精品一区| 日韩一区有码在线| 国产精品美女一区二区三区 | 蜜臀久久99精品久久久久久9 | 日韩三级在线免费观看| 91麻豆精品国产| 久久久亚洲高清| 综合亚洲深深色噜噜狠狠网站| 欧美亚洲日本国产| 91精品国产乱码久久蜜臀| 国产精品久久久久久久浪潮网站| 久热成人在线视频| 精品在线免费观看| 精品一区二区国语对白| 91论坛在线播放| 日韩三级视频中文字幕| 中文字幕一区免费在线观看| 亚洲国产欧美日韩另类综合| 丝袜诱惑亚洲看片| 成人午夜碰碰视频| 欧美日本国产一区| 成人欧美一区二区三区黑人麻豆| 在线播放/欧美激情| jiyouzz国产精品久久| 日韩一区二区在线看| 亚洲欧美激情小说另类| 麻豆极品一区二区三区| 欧美熟乱第一页| 日韩午夜激情视频| 一区二区三区在线高清| 成人污视频在线观看| 26uuu精品一区二区三区四区在线| 91国偷自产一区二区开放时间 | 亚洲大片一区二区三区| 国产一区在线观看视频| 欧美日韩精品二区第二页| 综合欧美亚洲日本| 99re6这里只有精品视频在线观看| 蜜臀91精品一区二区三区| 欧美午夜理伦三级在线观看| 国产欧美一区二区三区在线老狼| 日韩视频一区二区三区| 亚洲欧洲日韩av| 日韩欧美一区电影| 精品中文av资源站在线观看| 7799精品视频| 国产成人av自拍| 国产午夜精品一区二区三区嫩草 | 欧美国产国产综合| 国内精品伊人久久久久av一坑 | 激情欧美一区二区三区在线观看| 日韩中文字幕麻豆| 69av一区二区三区| 色哟哟日韩精品| 国产精品一区二区久久精品爱涩| 国产精品一级二级三级| 日本一区二区三区四区| 欧美日韩国产首页| 国产成人免费视频一区| 亚洲视频综合在线| 日韩一二三区视频| 成人一区二区在线观看| 美日韩黄色大片| 老汉av免费一区二区三区 | 欧美午夜视频网站| 视频一区视频二区中文| 久久久精品综合| 欧美人体做爰大胆视频| 精油按摩中文字幕久久| 色综合天天综合网国产成人综合天 | 国产麻豆欧美日韩一区| 国产精品国产三级国产普通话三级| 日韩电影一二三区| 亚洲天堂av一区| 精品噜噜噜噜久久久久久久久试看 | 日韩一区二区三区四区| 99久久久久久| 成人网页在线观看| 东方欧美亚洲色图在线| 国产美女视频91| 国产精品中文有码| 开心九九激情九九欧美日韩精美视频电影| 91视视频在线直接观看在线看网页在线看| 欧美丰满美乳xxx高潮www| 97se亚洲国产综合自在线| 国产一区二区中文字幕| 国产传媒日韩欧美成人| 成人午夜视频免费看| 欧美视频一区在线观看| 在线91免费看| 中文字幕不卡三区| 亚洲成人av免费| 久久国产精品色| 色综合久久综合| 日本国产一区二区| 欧美卡1卡2卡| 日韩一区欧美一区| 日韩中文欧美在线| 男女性色大片免费观看一区二区| 4438成人网| 日韩精品中文字幕在线一区| 日韩精品一区二区三区视频| 国产日韩高清在线| 亚洲一区二区偷拍精品| 美脚の诱脚舐め脚责91| 成人aa视频在线观看| 欧美日韩不卡视频| 亚洲国产高清在线观看视频| 日本在线不卡一区| 在线免费亚洲电影| 亚洲特级片在线| 国产成人精品免费看| 日韩一区二区在线观看视频播放| 波多野结衣亚洲| 99国产精品久久久久久久久久 | 久久久精品免费网站| 一区二区三区日韩欧美精品| 成人av网站在线| 精品日韩一区二区三区免费视频| 欧美久久久久免费| 中文字幕一区二区三区四区 |