bootstrap adminlte教程11:打造内部邮件系统 -收件箱管理
收件箱是相当复杂的。功能多,就不一一介绍了,全用代码说明一切。
1.index 的方法
// GET: Emails
public ActionResult Index(string emailState, string SearchString, int? page)
{
///初始化分页
if (!string.IsNullOrEmpty(emailState) && !string.IsNullOrEmpty(SearchString))
{
page = 1;
}
//赋值回传
ViewBag.emailState = emailState;
ViewBag.SearchString = SearchString;
//默认情况下是只显示未阅读的。同时按creattime降序
var emalilist = db.Emails.Where(c => c.EmailState == "0").OrderByDescending(z => z.CreatTime);
//开始if进行分析
if (!string.IsNullOrEmpty(emailState)) //这是不为空,表示点了已阅,需在搜索已阅
{
emalilist = db.Emails.Where(c => c.EmailState == "1").OrderByDescending(z => z.CreatTime);
}
if (!string.IsNullOrEmpty(SearchString)) //表示有字段
{
emalilist = db.Emails.Where(c => c.Title.Contains(SearchString)).OrderByDescending(z => z.CreatTime);
}
int pageNumber = page ?? 1;
int pageSize =10;
//通过ToPagedList扩展方法进行分页
//IPagedList<CmsContent> pagedList = seachindex.ToPagedList(pageNumber, pageSize);
return View(emalilist.ToPagedList(pageNumber, pageSize));
}
同时有一个批量删除的方法
// 批量删除文件功能
public ActionResult DelEmails(FormCollection form)
{
//var cmscontents = db.CmsContents;
//db.MenuRoles.RemoveRange(menuroles);
var winnars = from x in form.AllKeys
where form[x] != "false"
select x;
foreach (var id2 in winnars)
{
if (id2 != "selectAll") //全选的那个不算数。那个checkbox值要去掉
{
var emailContents = db.Emails.Find(id2);
if (emailContents != null)
{
db.Emails.Remove(emailContents);
}
}
}
db.SaveChanges();
return RedirectToAction("index", "Emails");
}
2.视图
视图中加了分页。
@model PagedList.IPagedList<jsdhh2.Models.Email>
@using PagedList.Mvc;
<link href="~/Content/PagedList.css" rel="stylesheet" />
@{
ViewBag.Title = "Index";
}
<div class="dhhheight1 col-md-12 col-xs-12"></div>
<!--start 左 -->
<div class="col-md-3 hidden-xs">
<div class="box box-solid">
<div class="box-header with-border">
<h3 class="box-title">内部邮箱</h3>
<div class="box-tools">
<button type="button" class="btn btn-box-tool" data-widget="collapse">
<i class="fa fa-minus"></i>
</button>
</div>
</div>
<div class="box-body no-padding" style="display: block;">
<ul class="nav nav-pills nav-stacked">
<li class="active">
<a href="~/Emails/Index">
<i class="fa fa-inbox"></i> 收件箱
<span class="label label-primary pull-right">12</span>
</a>
</li>
<li><a href="#"><i class="fa fa-envelope-o"></i> 已发邮箱</a></li>
<li><a href="~/Emails/Create"><i class="fa fa-file-text-o"></i> 发邮件</a></li>
</ul>
</div>
<!-- /.box-body -->
</div>
</div>
<!--start 右 -->
<div class="col-md-9 col-xs-12 pull-right">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
邮件清单
<small>请不要乱发邮件哟~</small>
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li>
<li class="active">Here</li>
</ol>
</section>
<!--end Content Header (Page header) -->
<!--start button -->
<h2></h2>
<div class="col-md-4 col-xs-6">
@using (Html.BeginForm("index", "Emails", new { @class = "form-inline" }, FormMethod.Post))
{
<div class="form-inline">
<div class="form-group">
<div class="input-group">
@Html.TextBox("SearchString", "", new { @class = "form-control", @Style = "display:inline" })
<span class="input-group-btn ">
<input id="btnSearch" class="btn btn btn-primary" type="submit" value="搜索">
</span>
</div>
</div>
</div>
}
</div>
<h2></h2>
@using (Html.BeginForm("DelEmails", "Emails", new { @class = "form-inline" }, FormMethod.Post))
{
<div class="btn-group text-left col-md-8 col-xs-6" role="group" aria-label="...">
<input type="submit" class="btn btn-warning" value="删除" />
<a class="btn btn-default" href="/Emails/Index?emailState=1" role="button">已阅</a>
</div>
<div class="dhhheight1"></div>
<h2> </h2>
<table class="table table-hover" style="table-layout:fixed">
<tr>
<th width="40px">
<input id="selectAll" name="selectAll" type="checkbox" value="true" onclick="changeState(this.checked)" /><input name="selectAll" type="hidden" value="false" />
</th>
<th width="50%">
标题
</th>
<th>
发表时间
</th>
<th>
发件人
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.CheckBox(item.Id, false)
</td>
<td style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;">
<small>
@if (item.EmailState == "1")
{ <span class="label label-success">阅</span>
}
else
{<span class="label label-warning">未</span>
}
</small> <a href="~/Emails/Details?id=@Html.DisplayFor(modelItem => item.Id)">@Html.DisplayFor(modelItem => item.Title)</a>
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatTime, "DateTimeTemplate")
</td>
<td>
@Html.DisplayFor(modelItem => item.CreatUser)
</td>
<td>
@Html.ActionLink("Del", "Delete", new { id = item.Id }, new { @class = "btn btn-warning btn-xs" })
</td>
</tr>
}
</table>
}
<hr />
<!-- Main content -->
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index",
new { page, emailState = ViewBag.emailState, SearchString = ViewBag.SearchString }))
</div>
@section Scripts {
<script type="text/javascript">
function changeState(isChecked) {
var chk_list = document.getElementsByTagName("input");
for (var i = 0; i < chk_list.length; i++) {
if (chk_list[i].type == "checkbox") {
chk_list[i].checked = isChecked;
}
}
}
</script>
}
3.效果。

浙公网安备 33010602011771号