[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表

时间:2022-09-21 14:21:07

写在前面

上篇文章实现了图片列表,这篇文章实现文档列表将轻车熟路,因为逻辑基本相似,只是查询条件的不同。这里将txt,doc,docx,ppt,pptx,xls,xlsx的文件都归为文档列表中。

系列文章

[EF]vs15+ef6+mysql code first方式

[实战]MVC5+EF6+MySql企业网盘实战(1)

[实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册

[实战]MVC5+EF6+MySql企业网盘实战(3)——验证码

[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像

[Bootstrap]modal弹出框

[实战]MVC5+EF6+MySql企业网盘实战(5)——登录界面,头像等比例压缩

[实战]MVC5+EF6+MySql企业网盘实战(5)——页面模板

[实战]MVC5+EF6+MySql企业网盘实战(5)——ajax方式注册

[实战]MVC5+EF6+MySql企业网盘实战(6)——ajax方式登录

[实战]MVC5+EF6+MySql企业网盘实战(7)——文件上传

[实战]MVC5+EF6+MySql企业网盘实战(8)——文件下载、删除

[实战]MVC5+EF6+MySql企业网盘实战(9)——编辑文件名

[实战]MVC5+EF6+MySql企业网盘实战(10)——新建文件夹

[实战]MVC5+EF6+MySql企业网盘实战(11)——新建文件夹2

[实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

[实战]MVC5+EF6+MySql企业网盘实战(13)——编辑文件夹

[实战]MVC5+EF6+MySql企业网盘实战(14)——逻辑重构

[实战]MVC5+EF6+MySql企业网盘实战(14)——思考

[实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2

[实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3

[实战]MVC5+EF6+MySql企业网盘实战(17)——思考2

[实战]MVC5+EF6+MySql企业网盘实战(18)——文件上传,下载,修改

[实战]MVC5+EF6+MySql企业网盘实战(19)——BJUI和ztree

[实战]MVC5+EF6+MySql企业网盘实战(20)——Bootstrap Paginator

[实战]MVC5+EF6+MySql企业网盘实战(21)——网盘操作日志

[实战]MVC5+EF6+MySql企业网盘实战(22)——图片列表

[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表

实现

代码与图片列表基本相同,这里在考虑是否使用一个模板,不过想想,为了以后为每种类型的文件列表做扩展,还是单独放在一个controller中了。再仔细想想有没有更好的实现方式。这里就先这样来做了。

前端代码

@{
ViewBag.Title
= "Lists";
Layout
= "~/Views/Shared/_Layout.cshtml";
}

<script>

$(function () {
var imgElement = $('#docmentpage');
var options = {
size:
"large",
bootstrapMajorVersion:
3,
//当前页
currentPage: 1,
//可以改变显示的页码数
numberOfPages: 5,
//总页数
totalPages: 5
};
function requestServer(pageIndex) {
$.getJSON(
'/Document/GetDocuments?page=' + pageIndex, function (data) {
console.log(data);
data
= JSON.parse(data);
if (data.total <= pageIndex) {
options.totalPages
= pageIndex;
}
else {
options.totalPages
= data.total;
};

$(
'#dvdocument').html('');
$(
'<table class="table table-bordered table-hover table-striped table-top" id="tbdocument"><tr><th>文件名</th> <th>文件大小</th><th>创建时间</th> </tr></table>').appendTo($('#dvdocument'));;
for (var i = 0; i < data._data.length; i++) {
var current = data._data[i];
$(
'<tr><td data-id=' + current.Id + '><img src="' + current.FileIcon + '">' + current.Name + '</td><td>' + current.Size + '</td><td>' + ChangeDateFormat(current.Dt) + '</td></tr>').appendTo($('#tbdocument'));
};
imgElement.bootstrapPaginator(options);

});
};
function loadData(pageIndex) {

options.onPageClicked
= function (e, originalEvent, type, page) {
//页码单击事件
console.log(page);
options.currentPage
= page;

requestServer(page);

};
requestServer(pageIndex);
imgElement.bootstrapPaginator(options);

};

loadData(
1);
});
</script>
<div class="tableContent" style="width:95%;" id="dvdocument">

</div>
<div style="width:95%;position:relative;margin-top:10px">
<ul id='docmentpage' class="bjui-pageFooter" style="margin:0 auto; margin-left:30%;"></ul>
</div>

服务端代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using Wolfy.NetDisk.BLL;
using Wolfy.NetDisk.IBLL;
using Wolfy.NetDisk.Model;
using Wolfy.NetDisk.Site.Models;

namespace Wolfy.NetDisk.Site.Controllers
{
public class DocumentController : Controller
{
private IMyFileServiceRepository _myFileServiceRepository = new MyFileServiceRepository();

private ILogServiceRepository _logServiceRepository = new LogServiceRepository();
private IFileTypeServiceRepository fileTypeServiceRepository = new FileTypeServiceRepository();
//
// GET: /Images/
public ActionResult Lists()
{
UserInfo user
= Session["user"] as UserInfo;
if (user == null)
{
return RedirectToAction("Login", "UserInfo");
}
return View();
}
[HttpGet]
public JsonResult GetDocuments()
{
UserInfo userInfo
= Session["user"] as UserInfo;
int page = Convert.ToInt32(Request.Params["page"]);
if (page <= 0)
{
page
= 1;
}
if (userInfo == null)
{
RedirectToAction(
"Login", "UserInfo");
}
int pageSize = 10;
int recordCount = 0;
var documentPaged = _myFileServiceRepository.FindPaged<DateTime>(page, pageSize, out recordCount, x => x.User.Id == userInfo.Id && x.IsDelete == false && (x.FileIcon.Contains("DocType.png") || x.FileIcon.Contains("XlsType.png") || x.FileIcon.Contains("PptType.png") || x.FileIcon.Contains("PdfType.png") || x.FileIcon.Contains("TxtType.png")), false, x => x.CreateDt);
int totalPage = Convert.ToInt32(Math.Ceiling(recordCount * 1.0 / pageSize));
List
<MyFileViewModel> lstMyFileViewModel = new List<MyFileViewModel>();
foreach (var item in documentPaged)
{
lstMyFileViewModel.Add(
new MyFileViewModel()
{
Id
= item.Id,
FileIcon
= item.FileIcon,
FileServerUrl
= "/NetDisk/" + item.FileMd5 + item.FileExt,
Name
= item.Name,
FileThumnailUrl
= string.Empty,
Size
= item.FileSize,
Dt
= item.CreateDt
});
}
return new JsonResult() { Data = new JavaScriptSerializer().Serialize(new { _data = lstMyFileViewModel, _code = 200, total = totalPage }), JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}

}
}

测试

[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表

总结

实现起来还是比较简单的,马上就2016年了,祝大家元旦快乐。