一、登录

1、设计数据库

CREATE TABLE [dbo].[AdminUser]([Id] [int] IDENTITY(1,1) NOT NULL,[Name] [varchar](50) NULL,[Pwd] [varchar](36) NULL,[Email] [varchar](200) NULL
)

2、创建MVC框架

3、创建实体类–建立实体模型

创建Operate类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WebApplication4.Model
{public  class Operate{public bool Success { get; set; }}
}

右键–>添加类–>ADO.NET实体模型–>配置连接–>选择需要的数据库生成即可

效果:

4.创建数据库访问层–>生成EF6生成器

效果:

添加EF引用:

引用-->右键-->NuGet包添加引用 EntityFramework

添加类BaseRepository:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;namespace WebApplication4.DAL
{public class BaseRepository<T, TS> where T : classwhere TS : DbContext, new(){private DbContext db = DbContextFactory<TS>.GetCurrentDbContext();//添加单条记录public bool Add(T entily){db.Set<T>().Add(entily);return db.SaveChanges() > 0;}//添加多条记录public bool AddList(List<T> entily){db.Set<T>().AddRange(entily);return db.SaveChanges() > 0;}//删除public bool DELETE(T entily){db.Entry(entily).State = EntityState.Deleted;return db.SaveChanges() > 0;}//删除多个public bool BDELETE(List<T> entiles){db.Set<T>().RemoveRange(entiles);return db.SaveChanges() > 0;}//根据id删除public bool BatchDELETE(params int[] entiles){foreach (var id in entiles){var entity = db.Set<T>().Find(id);if (entity != null){db.Set<T>().Remove(entity);}}return db.SaveChanges() > 0;}//修改public bool Update(T entily){db.Entry(entily).State = EntityState.Modified;return db.SaveChanges() > 0;}//查询一个集合public List<T> QueryList(Expression<Func<T, bool>> lambdaExpression){return db.Set<T>().Where(lambdaExpression).ToList();}//查询一个对象,如果没有返回nullpublic T Query(Expression<Func<T, bool>> lambdaExpression){return db.Set<T>().SingleOrDefault(lambdaExpression);}public bool Exists(Expression<Func<T, bool>> lambdaExpression){return db.Set<T>().Any(lambdaExpression);}//分页查询public List<T> QuerypageList<S>(int pageIndex, int pageSize, Expression<Func<T, bool>> wheredma, Expression<Func<T, S>> orderbyLamba, out int count, bool isAc = true){count = db.Set<T>().Where(wheredma).Count();if (!isAc){return db.Set<T>().Where(wheredma).OrderByDescending(orderbyLamba).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();}else{return db.Set<T>().Where(wheredma).OrderBy(orderbyLamba).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();}}}

添加类DbContextFactory

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;namespace WebApplication4.DAL
{public class DbContextFactory<TS> where TS : DbContext, new(){public static DbContext GetCurrentDbContext(){var dbContext = CallContext.GetData(typeof(TS).Name) as DbContext;if (dbContext != null){return dbContext;}else{dbContext = new TS();CallContext.SetData(typeof(TS).Name, dbContext);return dbContext;}}}}

编辑Model1.Context.tt文件

<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><#@output extension=".cs"#><#MetadataLoader loader = new MetadataLoader(this);
//注意修改路径,直接拖实体模型即可
string inputFile = @"..\\WebApplication4.Model\Model1.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
#>
//注意修改相应的命名空间
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WebApplication4.Model;namespace WebApplication4.Model
{<#
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
#>
//注意PermissionEntities是实体模型中 : base("name=PermissionEntities")要改成相应的public partial class <#=entity.Name#>Repository : BaseRepository<<#=entity.Name#>,PermissionEntities>{}
<#}#>}

4、业务逻辑层:

添加EF引用:

引用-->右键-->NuGet包添加引用 EntityFramework

在页面添加using引用

添加基类:BaseService类

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using WebApplication4.DAL;
using WebApplication4.Model;namespace WebApplication4.BLL
{public class BaseService<T> where T : class{private BaseRepository<T, PermissionEntities> baseRepository = new BaseRepository<T, PermissionEntities>();//添加单条记录public virtual bool Add(T entily){return baseRepository.Add(entily);}//添加多条记录public virtual bool AddList(List<T> entily){return baseRepository.AddList(entily);}//删除public virtual bool DELETE(T entily){return baseRepository.DELETE(entily);}//删除多个public virtual bool BDELETE(List<T> entiles){return baseRepository.BDELETE(entiles);}//根据id删除public bool BatchDELETE(params int[] entiles){return baseRepository.BatchDELETE(entiles);}//修改public virtual bool Update(T entily){return baseRepository.Update(entily);}//查询一个集合public virtual List<T> QueryList(Expression<Func<T, bool>> lambdaExpression){return baseRepository.QueryList(lambdaExpression);}//查询一个对象,如果没有返回nullpublic virtual T Query(Expression<Func<T, bool>> lambdaExpression){return baseRepository.Query(lambdaExpression);}public virtual bool Exists(Expression<Func<T, bool>> lambdaExpression){return baseRepository.Exists(lambdaExpression);}//分页查询public virtual List<T> QuerypageList<S>(int pageIndex, int pageSize, Expression<Func<T, bool>> wheredma, Expression<Func<T, S>> orderbyLamba, out int count, bool isAc = true){return baseRepository.QuerypageList(pageIndex, pageSize, wheredma, orderbyLamba, out count, isAc);}}}

5、创建业务逻辑层

添加AdminInfoService

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebApplication4.Model;namespace WebApplication4.BLL.Service
{public class AdminInfoService : BaseService<AdminUser>{}
}

6、UI层
在Models文件夹添加上下文

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using WebApplication4.Model;namespace WebApplication4.Models
{/// <summary>/// 管理员的上下文/// </summary>public class AdminContext{/// <summary>/// 会话的key/// </summary>private string SessionKey = "ADMIN_KEY";/// <summary>/// 静态的上下文/// </summary>public static AdminContext adminContext = new AdminContext();/// <summary>///会话状态/// </summary>public HttpSessionState httpSessionState => HttpContext.Current.Session;/// <summary>/// 用户对象/// </summary>public AdminUser adminInfo{get{return httpSessionState[SessionKey] as AdminUser;}set{httpSessionState[SessionKey] = value;}}}
}

创建一个空的控制器LoginController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using WebApplication4.BLL.Service;
using WebApplication4.Model;
using WebApplication4.Models;namespace WebApplication4.Controllers
{public class LoginController : Controller{private AdminInfoService adminInfoService = new AdminInfoService();#region 登录public JsonResult Login(AdminUser adminUser, bool check){Operate operate = new Operate();AdminUser adminUsers = new AdminUser();Expression<Func<AdminUser, bool>> lambdaExpression = a => a.Name == adminUser.Name && a.Password == adminUser.Password;adminUsers = adminInfoService.Query(lambdaExpression);operate.Success = adminUsers != null;if (adminUsers != null){operate.Success = true;//存储session值AdminContext.adminContext.adminInfo = adminUsers;//如果选中保存密码则存储cookieif (check){//存储cookie//创建一个Cookie对象HttpCookie httpCookie = new HttpCookie("CookieName");//设置Cookie的值httpCookie.Values.Add("Name", adminUsers.Name);httpCookie.Values.Add("Password", adminUsers.Password);httpCookie.Values.Add("DateTime", DateTime.Now.AddDays(7).ToString("yyyy-MM-dd HH:mm:ss"));//设置Cookie的过期时间httpCookie.Expires = DateTime.Now.AddDays(7);System.Web.HttpContext.Current.Response.Cookies.Add(httpCookie);}}return Json(operate);}#endregion}
}

Home控制器操作

using WebApplication4.Model
using WebApplication4.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace Admin.Controllers
{public class HomeController : Controller{public ActionResult Index(){return View();}public ActionResult Login() {//取出Cookie保存的信息HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies.Get("CookieName");if (cookie != null){string name = cookie["Name"];//等同于string name = cookie.Values.Get("UserName");string pwd = cookie["Password"];//DateTime time = DateTime.Parse(cookie["DateTime"]);if (name != null && pwd != null && DateTime.Parse(cookie["DateTime"]) != null && DateTime.Now < DateTime.Parse(cookie["DateTime"])){//将Cookie中的值赋给上下文session  使其在不登录时页面也能够显示AdminContext.adminContext.adminInfo = new AdminUser(){Name = name,Password = pwd};return Redirect("/Home/Index");}}return View();}}
}

Login页面

<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8"><meta name="renderer" content="webkit|ie-comp|ie-stand"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /><meta http-equiv="Cache-Control" content="no-siteapp" /><!--[if lt IE 9]><script type="text/javascript" src="lib/html5shiv.js"></script><script type="text/javascript" src="lib/respond.min.js"></script><![endif]--><link href="~/static/h-ui/css/H-ui.min.css" rel="stylesheet" type="text/css" /><link href="~/static/h-ui.admin/css/H-ui.login.css" rel="stylesheet" type="text/css" /><link href="~/static/h-ui.admin/css/style.css" rel="stylesheet" type="text/css" /><link href="~/lib/Hui-iconfont/1.0.8/iconfont.css" rel="stylesheet" type="text/css" /><!--[if IE 6]><script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script><script>DD_belatedPNG.fix('*');</script><![endif]--><title>后台登录 - H-ui.admin v3.1</title><meta name="keywords" content="H-ui.admin v3.1,H-ui网站后台模版,后台模版下载,后台管理系统模版,HTML后台模版下载"><meta name="description" content="H-ui.admin v3.1,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
</head>
<body><input type="hidden" id="TenantId" name="TenantId" value="" /><div class="header"></div><div class="loginWraper"><div id="loginform" class="loginBox"><div><div class="row cl"><label class="form-label col-xs-3"><i class="Hui-iconfont">&#xe60d;</i></label><div class="formControls col-xs-8"><input id="name" name="" type="text" placeholder="账户" class="input-text size-L"></div></div><div class="row cl"><label class="form-label col-xs-3"><i class="Hui-iconfont">&#xe60e;</i></label><div class="formControls col-xs-8"><input id="pwd" name="" type="password" placeholder="密码" class="input-text size-L"></div></div><div class="row cl"><input type="checkbox" id="checkpwd" name="box" lay-skin="primary" title="记住密码" checked="">记住密码</div><div class="row cl"><div class="formControls col-xs-8 col-xs-offset-3"><input id="den" name="" type="button" class="btn btn-success radius size-L" value="&nbsp;登&nbsp;&nbsp;&nbsp;&nbsp;录&nbsp;"><input name="" type="reset" class="btn btn-default radius size-L" value="&nbsp;取&nbsp;&nbsp;&nbsp;&nbsp;消&nbsp;"></div></div><div></div></div></div></div><div class="footer">Copyright 你的公司名称 by H-ui.admin v3.1</div><script type="text/javascript" src="~/lib/jquery/1.9.1/jquery.min.js"></script><script type="text/javascript" src="~/static/h-ui/js/H-ui.min.js"></script><script type="text/javascript">//登录$("#den").on('click', function () {var flag = false;if ($("#checkpwd").is(":Checked")) { flag = true; }var AdminInfo = {};AdminInfo.Name = $("#name").val();AdminInfo.Password = $("#pwd").val();$.ajax({data: AdminInfo,type: "post",url: "/Login/Login?check=" + flag,success: function (operate) {if (operate.Success) {alert("登录成功");window.location.href = "/Home/Index";} else {alert("登录失败");}}})})</script>
</body>
</html>

Index页面:

@using WebApplication4.Models
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="Bookmark" href="/favicon.ico" >
<link rel="Shortcut Icon" href="/favicon.ico" />
<!--[if lt IE 9]>
<script type="text/javascript" src="lib/html5shiv.js"></script>
<script type="text/javascript" src="lib/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="~/static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="~/static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="~/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="~/static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="~/static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>H-ui.admin v3.1</title>
<meta name="keywords" content="H-ui.admin v3.1,H-ui网站后台模版,后台模版下载,后台管理系统模版,HTML后台模版下载">
<meta name="description" content="H-ui.admin v3.1,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
</head>
<body>
<header class="navbar-wrapper"><div class="navbar navbar-fixed-top"><div class="container-fluid cl"> <a class="logo navbar-logo f-l mr-10 hidden-xs" href="/aboutHui.shtml">H-ui.admin</a> <a class="logo navbar-logo-m f-l mr-10 visible-xs" href="/aboutHui.shtml">H-ui</a> <span class="logo navbar-slogan f-l mr-10 hidden-xs">v3.1</span> <a aria-hidden="false" class="nav-toggle Hui-iconfont visible-xs" href="javascript:;">&#xe667;</a><nav class="nav navbar-nav"><ul class="cl"><li class="dropDown dropDown_hover"><a href="javascript:;" class="dropDown_A"><i class="Hui-iconfont">&#xe600;</i> 新增 <i class="Hui-iconfont">&#xe6d5;</i></a><ul class="dropDown-menu menu radius box-shadow"><li><a href="javascript:;" onclick="article_add('添加资讯','article-add.html')"><i class="Hui-iconfont">&#xe616;</i> 资讯</a></li><li><a href="javascript:;" onclick="picture_add('添加资讯','picture-add.html')"><i class="Hui-iconfont">&#xe613;</i> 图片</a></li><li><a href="javascript:;" onclick="product_add('添加资讯','product-add.html')"><i class="Hui-iconfont">&#xe620;</i> 产品</a></li><li><a href="javascript:;" onclick="member_add('添加用户','member-add.html','','510')"><i class="Hui-iconfont">&#xe60d;</i> 用户</a></li></ul></li></ul></nav><nav id="Hui-userbar" class="nav navbar-nav navbar-userbar hidden-xs"><ul class="cl"><li>欢迎登录</li><li class="dropDown dropDown_hover"><a href="#" class="dropDown_A">@AdminContext.adminContext.adminInfo.Name<i class="Hui-iconfont">&#xe6d5;</i></a><ul class="dropDown-menu menu radius box-shadow"><li><a href="javascript:;" onClick="myselfinfo()">个人信息</a></li><li><a href="#">切换账户</a></li><li><a href="#">退出</a></li></ul></li><li id="Hui-msg"> <a href="#" title="消息"><span class="badge badge-danger">1</span><i class="Hui-iconfont" style="font-size:18px">&#xe68a;</i></a> </li><li id="Hui-skin" class="dropDown right dropDown_hover"> <a href="javascript:;" class="dropDown_A" title="换肤"><i class="Hui-iconfont" style="font-size:18px">&#xe62a;</i></a><ul class="dropDown-menu menu radius box-shadow"><li><a href="javascript:;" data-val="default" title="默认(黑色)">默认(黑色)</a></li><li><a href="javascript:;" data-val="blue" title="蓝色">蓝色</a></li><li><a href="javascript:;" data-val="green" title="绿色">绿色</a></li><li><a href="javascript:;" data-val="red" title="红色">红色</a></li><li><a href="javascript:;" data-val="yellow" title="黄色">黄色</a></li><li><a href="javascript:;" data-val="orange" title="橙色">橙色</a></li></ul></li></ul></nav></div>
</div>
</header>
<aside class="Hui-aside"><div class="menu_dropdown bk_2"><dl id="menu-article"><dt><i class="Hui-iconfont">&#xe616;</i> 资讯管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="article-list.html" data-title="资讯管理" href="javascript:void(0)">资讯管理</a></li></ul></dd></dl><dl id="menu-picture"><dt><i class="Hui-iconfont">&#xe613;</i> 图片管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="picture-list.html" data-title="图片管理" href="javascript:void(0)">图片管理</a></li></ul></dd></dl><dl id="menu-product"><dt><i class="Hui-iconfont">&#xe620;</i> 产品管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="product-brand.html" data-title="品牌管理" href="javascript:void(0)">品牌管理</a></li><li><a data-href="product-category.html" data-title="分类管理" href="javascript:void(0)">分类管理</a></li><li><a data-href="product-list.html" data-title="产品管理" href="javascript:void(0)">产品管理</a></li></ul></dd></dl><dl id="menu-comments"><dt><i class="Hui-iconfont">&#xe622;</i> 评论管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="" data-title="评论列表" href="javascript:;">评论列表</a></li><li><a data-href="feedback-list.html" data-title="意见反馈" href="javascript:void(0)">意见反馈</a></li></ul></dd></dl><dl id="menu-member"><dt><i class="Hui-iconfont">&#xe60d;</i> 会员管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="member-list.html" data-title="会员列表" href="javascript:;">会员列表</a></li><li><a data-href="member-del.html" data-title="删除的会员" href="javascript:;">删除的会员</a></li><li><a data-href="member-level.html" data-title="等级管理" href="javascript:;">等级管理</a></li><li><a data-href="member-scoreoperation.html" data-title="积分管理" href="javascript:;">积分管理</a></li><li><a data-href="member-record-browse.html" data-title="浏览记录" href="javascript:void(0)">浏览记录</a></li><li><a data-href="member-record-download.html" data-title="下载记录" href="javascript:void(0)">下载记录</a></li><li><a data-href="member-record-share.html" data-title="分享记录" href="javascript:void(0)">分享记录</a></li></ul></dd></dl><dl id="menu-admin"><dt><i class="Hui-iconfont">&#xe62d;</i> 管理员管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="admin-role.html" data-title="角色管理" href="javascript:void(0)">角色管理</a></li><li><a data-href="admin-permission.html" data-title="权限管理" href="javascript:void(0)">权限管理</a></li><li><a data-href="admin-list.html" data-title="管理员列表" href="javascript:void(0)">管理员列表</a></li></ul></dd></dl><dl id="menu-tongji"><dt><i class="Hui-iconfont">&#xe61a;</i> 系统统计<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="charts-1.html" data-title="折线图" href="javascript:void(0)">折线图</a></li><li><a data-href="charts-2.html" data-title="时间轴折线图" href="javascript:void(0)">时间轴折线图</a></li><li><a data-href="charts-3.html" data-title="区域图" href="javascript:void(0)">区域图</a></li><li><a data-href="charts-4.html" data-title="柱状图" href="javascript:void(0)">柱状图</a></li><li><a data-href="charts-5.html" data-title="饼状图" href="javascript:void(0)">饼状图</a></li><li><a data-href="charts-6.html" data-title="3D柱状图" href="javascript:void(0)">3D柱状图</a></li><li><a data-href="charts-7.html" data-title="3D饼状图" href="javascript:void(0)">3D饼状图</a></li></ul></dd></dl><dl id="menu-system"><dt><i class="Hui-iconfont">&#xe62e;</i> 系统管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt><dd><ul><li><a data-href="system-base.html" data-title="系统设置" href="javascript:void(0)">系统设置</a></li><li><a data-href="system-category.html" data-title="栏目管理" href="javascript:void(0)">栏目管理</a></li><li><a data-href="system-data.html" data-title="数据字典" href="javascript:void(0)">数据字典</a></li><li><a data-href="system-shielding.html" data-title="屏蔽词" href="javascript:void(0)">屏蔽词</a></li><li><a data-href="system-log.html" data-title="系统日志" href="javascript:void(0)">系统日志</a></li></ul></dd></dl>
</div>
</aside>
<div class="dislpayArrow hidden-xs"><a class="pngfix" href="javascript:void(0);" onClick="displaynavbar(this)"></a></div>
<section class="Hui-article-box"><div id="Hui-tabNav" class="Hui-tabNav hidden-xs"><div class="Hui-tabNav-wp"><ul id="min_title_list" class="acrossTab cl"><li class="active"><span title="我的桌面" data-href="welcome.html">我的桌面</span><em></em></li></ul></div><div class="Hui-tabNav-more btn-group"><a id="js-tabNav-prev" class="btn radius btn-default size-S" href="javascript:;"><i class="Hui-iconfont">&#xe6d4;</i></a><a id="js-tabNav-next" class="btn radius btn-default size-S" href="javascript:;"><i class="Hui-iconfont">&#xe6d7;</i></a></div>
</div><div id="iframe_box" class="Hui-article"><div class="show_iframe"><div style="display:none" class="loading"></div><iframe scrolling="yes" frameborder="0" src="welcome.html"></iframe></div>
</div>
</section><div class="contextMenu" id="Huiadminmenu"><ul><li id="closethis">关闭当前 </li><li id="closeall">关闭全部 </li>
</ul>
</div>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="~/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="~/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="~/static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="~/static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去--><!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="~/lib/jquery.contextmenu/jquery.contextmenu.r2.js"></script>
<script type="text/javascript">
$(function(){/*$("#min_title_list li").contextMenu('Huiadminmenu', {bindings: {'closethis': function(t) {console.log(t);if(t.find("i")){t.find("i").trigger("click");}      },'closeall': function(t) {alert('Trigger was '+t.id+'\nAction was Email');},}});*/
});
/*个人信息*/
function myselfinfo(){layer.open({type: 1,area: ['300px','200px'],fix: false, //不固定maxmin: true,shade:0.4,title: '查看信息',content: '<div>管理员信息</div>'});
}/*资讯-添加*/
function article_add(title,url){var index = layer.open({type: 2,title: title,content: url});layer.full(index);
}
/*图片-添加*/
function picture_add(title,url){var index = layer.open({type: 2,title: title,content: url});layer.full(index);
}
/*产品-添加*/
function product_add(title,url){var index = layer.open({type: 2,title: title,content: url});layer.full(index);
}
/*用户-添加*/
function member_add(title,url,w,h){layer_show(title,url,w,h);
}</script> </body>
</html>

二、列表的增删改查

1、在实体层中添加PageListResult

public class PageListResult<T>{public int code { get; set; }public string msg { get; set; }public int count { get; set; }public List<T> data { get; set; }}

2、业务逻辑层:创建AdminService类:

 public class AdminService : BaseService<AdminUser>, IDenpendecy{}

3、控制器:

public class AdminController : Controller{public AdminService user = new AdminService ();#region 显示查询public ActionResult Display(int page, int limit, string UserName){//PageListResult类PageListResult<AdminUser> pageListResult = new PageListResult<AdminUser>();//设值pageListResult.code = 0;pageListResult.msg = string.Empty;//数据总数int count = 0;//where条件(ling表达式)Expression<Func<AdminUser, bool>> Wherelambda = c => true;if (!string.IsNullOrEmpty(UserName)){Wherelambda = a => a.Name.Contains(UserName);}//设置OrderBy排序的字段Expression<Func<AdminUser, int>> OrderBylambda = c => c.Id;//调用QuerypageList方法查询数据pageListResult.data = user.QuerypageList(page, limit, Wherelambda, OrderBylambda, out count);//返回结果return Json(pageListResult, JsonRequestBehavior.AllowGet);}#endregion#region 删除public ActionResult Delete(AdminUser adminUser){//Operate类Operate operate = new Operate();//调用DELETE方法删除数据operate.Success = user.DELETE(adminUser);return Json(operate);}#endregion#region 添加/修改public ActionResult Addhh(AdminUser adminUser){//Operate类Operate operate = new Operate();//判断Id,是修改还是添加if (adminUser.Id != 0){//调用Update方法修改数据operate.Success = user.Update(adminUser);}else{//调用Add方法添加数据operate.Success = user.Add(adminUser);}return Json(operate);}#endregion}

4、UI层:

<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8"><meta name="renderer" content="webkit|ie-comp|ie-stand"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /><meta http-equiv="Cache-Control" content="no-siteapp" /><!--[if lt IE 9]><script type="text/javascript" src="lib/html5shiv.js"></script><script type="text/javascript" src="lib/respond.min.js"></script><![endif]--><link rel="stylesheet" type="text/css" href="~/static/h-ui/css/H-ui.min.css" /><link rel="stylesheet" type="text/css" href="~/static/h-ui.admin/css/H-ui.admin.css" /><link rel="stylesheet" type="text/css" href="~/lib/Hui-iconfont/1.0.8/iconfont.css" /><link rel="stylesheet" type="text/css" href="~/static/h-ui.admin/skin/default/skin.css" id="skin" /><link rel="stylesheet" type="text/css" href="~/static/h-ui.admin/css/style.css" /><link rel="stylesheet" href="~/layui/css/layui.css" /><!--[if IE 6]><script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js" ></script><script>DD_belatedPNG.fix('*');</script><![endif]--><title>用户管理</title>
</head>
<body><nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 用户中心 <span class="c-gray en">&gt;</span> 用户管理 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a></nav><div class="pd-20"><input type="text" id="UserName" class="input-text" style="width:250px" placeholder="输入会员名称" name=""><button id="getLike" type="submit" class="btn btn-success" id="" name=""><i class="icon-search"></i> 搜用户</button></div><table class="layui-hide" id="test" lay-filter="demo"></table><script id="barDemo" type="text/html"><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a></script><div class="cl pd-5 bg-1 bk-gray mt-20"><span class="l_f"><a href="javascript:ovid()" id="Competence_add" class="btn btn-warning" title="添加用户"><i class="fa fa-plus"></i> 添加用户</a></span></div><div id="pageNav" class="pageNav">123</div><div id="Competence_add_style" style="display:none"><div class="Competence_add_style"><div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 名称 </label><div class="col-sm-9"><input type="text" id="Name" placeholder="" name="名称" class="col-xs-10 col-sm-5" /></div></div><div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 密码 </label><div class="col-sm-9"><input type="text" id="Password" placeholder="" name="密码" class="col-xs-10 col-sm-5" /></div></div><div class="form-group"><label class="col-sm-2 control-label no-padding-right" for="form-field-1"> 邮箱 </label><div class="col-sm-9"><input type="text" id="Email" placeholder="" name="邮箱" class="col-xs-10 col-sm-5" /></div></div></div></div><!--_footer 作为公共模版分离出去--><script type="text/javascript" src="~/lib/jquery/1.9.1/jquery.min.js"></script><script type="text/javascript" src="~/lib/layer/2.4/layer.js"></script><script type="text/javascript" src="~/static/h-ui/js/H-ui.min.js"></script><script type="text/javascript" src="~/static/h-ui.admin/js/H-ui.admin.js"></script><script src="~/layui/layui.js" type="text/javascript"></script><!--/_footer 作为公共模版分离出去--><!--请在下方写此页面业务相关的脚本--><script type="text/javascript" src="~/lib/My97DatePicker/4.8/WdatePicker.js"></script><script type="text/javascript" src="~/lib/datatables/1.10.0/jquery.dataTables.min.js"></script><script type="text/javascript" src="~/lib/laypage/1.2/laypage.js"></script>
</body>
</html>
<script type="text/javascript">layui.use('table', function () {var table = layui.table, form = layui.form;  //启用table.render({elem: '#test', url: '/User/Display/', cellMinWidth: 80, cols: [[{ type: 'checkbox' }, { field: 'Id', width: 180, align: 'center', title: 'Id', sort: true }, { field: 'Name', width: 180, align: 'center', title: '用户名' }, { field: 'Password', width: 180, align: 'center', title: '密码' }, { field: 'Email', width: 180, align: 'center', title: '邮箱' }, { fixed: 'right', title: '操作', width: 208, align: 'center', toolbar: '#barDemo' }]], page: true, id: 'testReload'});$("#getLike").click(function () {var table = layui.table;//获取页面的查询条件var UserName = $("#UserName").val();//上述方qq1法等价于table.reload('testReload', {where: { //设定异步数据接口的额外参数,任意设UserName: UserName,//…}});});table.on('tool(demo)', function (obj) {var AdminUser = obj.data;var ID = AdminUser.Id;if (obj.event === 'del') {//删除layer.confirm('确定删除吗?', function (index) {$.ajax({url: "/User/Delete?Id=" + ID,type: "Post",success: function (data) {if (data.Success) {layer.msg('删除成功!', {title: '提示框',icon: 1,time: 2000}, function () {location.reload();//刷新页面layer.close(index);});}else {layer.msg('删除失败!', {title: '提示框',icon: 1,time: 2000});}}});});}else if (obj.event === 'edit') {$("#ID").val(AdminUser.Id);$("#Name").val(AdminUser.Name);$("#Password").val(AdminUser.Password);$("#Email").val(AdminUser.Email);layer.open({type: 1,title: '修改菜单',maxmin: true,shadeClose: false,area: ['800px', ''],content: $('#Competence_add_style'),btn: ['提交', '取消'],yes: function (index, layero) {var num = 0;var str = "";$(".col-sm-9 input[type$='text'],#form_textarea").each(function (n) {if ($(this).val() == "") {layer.alert(str += "" + $(this).attr("name") + "不能为空!\r\n", {title: '提示框',icon: 0,});num++;return false;}});if (num > 0) { return false; }else {var user = {};user.Id = ID;user.Name = $("#Name").val();user.Password = $("#Password").val();user.Email = $("#Email").val();$.ajax({url: "/User/Addhh",type: "post",data: user,success: function (result) {if (result.Success) {layer.msg("添加成功");location.reload();//刷新页面}else {layer.msg("添加失败", { icon: 0, time: 3000 });}}})}}})}})});$('#Competence_add').on('click', function () {layer.open({type: 1,title: '添加菜单',maxmin: true,shadeClose: false,area: ['800px', ''],content: $('#Competence_add_style'),btn: ['提交', '取消'],yes: function (index, layero) {var num = 0;var str = "";$(".col-sm-9 input[type$='text'],#form_textarea").each(function (n) {if ($(this).val() == "") {layer.alert(str += "" + $(this).attr("name") + "不能为空!\r\n", {title: '提示框',icon: 0,});num++;return false;}});if (num > 0) { return false; }else {var user = {};user.Name = $("#Name").val();user.Password = $("#Password").val();user.Email = $("#Email").val();$.ajax({url: "/User/Addhh",type: "post",data: user,success: function (result) {if (result.Success) {layer.msg("添加成功");location.reload();//刷新页面}else {layer.msg("添加失败", { icon: 0, time: 3000 });}}})}}})})
</script>

过滤器

在UI层添加一个文件夹Attributes

添加行为过滤器 ActionAttribute:

public class ActionAttribute : ActionFilterAttribute  //行为过滤器{/// <summary>/// 调用控制器对应的Action方法之后的操作/// </summary>/// <param name="filterContext"></param>public override void OnActionExecuted(ActionExecutedContext filterContext){if (AdminContext.adminContext.adminInfo != null){//获取用户名(上下文中的AdminContext)string username = AdminContext.adminContext.adminInfo.Name;string controller = filterContext.RouteData.Values["Controller"].ToString();string action = filterContext.RouteData.Values["Action"].ToString();//获取系统的日志string msg = $"时间:{DateTime.Now},用户名:{username},已完成控制器:{controller},页面:{action}";//获取文件路径string path = "D:\\lj.txt";File.AppendAllText(path, msg);}}/// <summary>/// 调用控制器对应的Action方法之前的操作/// </summary>/// <param name="filterContext"></param>public override void OnActionExecuting(ActionExecutingContext filterContext){if (AdminContext.adminContext.adminInfo!=null){//获取用户名(上下文中的AdminContext)string username = AdminContext.adminContext.adminInfo.Name;string controller = filterContext.RouteData.Values["Controller"].ToString();string action = filterContext.RouteData.Values["Action"].ToString();//获取系统的日志string msg = $"时间:{DateTime.Now},用户名:{username},正在操作控制器:{controller},页面:{action}";//获取文件路径string path = "D:\\Exception.txt";File.AppendAllText(path, msg);}}/// <summary>/// 调用控制器对应的Action方法之后页面渲染之后的操作/// </summary>/// <param name="filterContext"></param>public override void OnResultExecuted(ResultExecutedContext filterContext){}/// <summary>/// 调用控制器对应的Action方法之后页面渲染之前的操作/// </summary>/// <param name="filterContext"></param>public override void OnResultExecuting(ResultExecutingContext filterContext){}}

添加权限过滤器 PermissionAttribute 

public class PermissionAttribute : AuthorizeAttribute  //权限过滤器{/// <summary>/// 判断认证是否通过/// </summary>/// <param name="httpContext"></param>/// <returns></returns>protected override bool AuthorizeCore(HttpContextBase httpContext){//如果上下文不为空if (AdminContext.adminContext.adminInfo != null && httpContext.Session != null){return true;}return false;}/// <summary>///认证不通过的时候所做的操作/// </summary>/// <param name="filterContext"></param>protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext){//获取用户请求的地址string path = filterContext.HttpContext.Request.Path;//自定义路由跳转Dictionary<string, object> keys = new Dictionary<string, object>();keys.Add("Controller", "Home");keys.Add("Action", "Login");keys.Add("ReturnUrl", path);var routeValue = new RouteValueDictionary(keys);//根据指定路由跳转filterContext.Result = new RedirectToRouteResult(routeValue);}}

添加异常过滤器 ExceptionAttribute 

public class ExceptionAttribute : HandleErrorAttribute  //异常过滤器{/// <summary>/// 系统发生异常的操作/// </summary>/// <param name="filterContext"></param>public override void OnException(ExceptionContext filterContext){//Exception exception = filterContext.Exception;//string msg = exception.Message;//获取系统的日志string exception = filterContext.Exception.ToString();string msg = $"时间:{DateTime.Now},系统出错:{exception}";//获取文件路径string path = "D:\\Exception.txt";//如果文件不存在则创建if (!File.Exists(path)){File.Create(path);}File.AppendAllText(path, msg);}}

在UI层中的App_Start文件夹中的FilrerConfig.cs

配置:异常过滤器行为过滤器

public static void RegisterGlobalFilters(GlobalFilterCollection filters){//异常过滤器filters.Add(new ExceptionAttribute());//行为过滤器filters.Add(new ActionAttribute());}

在Home控制器中使用权限过滤器

public class HomeController : Controller{[PermissionAttribute]public ActionResult Index(){return View();}
}

EF框架实现登录(记住密码+首页欢迎)+列表功能(增删改查)+过滤器相关推荐

  1. EF框架实现登录记住密码+首页欢迎

    1:创建实体层–建立实体模型 创建Operate类 using System; using System.Collections.Generic; using System.Linq; using S ...

  2. EF实现——后台登陆,记住密码+主页面欢迎+管理员增删改查

    1.创建数据库 CREATE DATABASE Permission; --创建数据库 CREATE TABLE [dbo].[AdminUser]([Id] [int] IDENTITY(1,1) ...

  3. ORM框架之Mybatis(一)基于mapper配置增删改查

    Mybatis是现在非常流行的SSM框架中的M部分,Mybatis也是一个主流的ORM框架,在项目中用来处理持久层数据. 一.Mybatis框架介绍及使用 1.1 mybatis框架概述: mybat ...

  4. 用ajax+jquery+json+css3+html5实现登录、注册、以及主页面的增删改查

    主要思路 在登录界面,输入用户名和密码,失焦的时候,判断输入的用户名和密码是否符合相应的正则表达式的要求.如果符合,就发送ajax请求到服务端,服务端接受到请求,就把从页面中传来的数据和json文件里 ...

  5. python增删改查的框架layui_spring+springMvc+mybatis+layui实现数据表格的增删改查(纯layui实现)...

    [实例简介] 项目描述: 这是通过ssm+layui 实现的简单的对数据表格的增删改查,所有页面纯由layui实现. 如果你是新手学习layui,那这个绝对会对你有很大的帮助: 如果你之前已经学过甚至 ...

  6. Python写一个账号密码小助手(包含增删改查功能)

    背景 随着现在的应用越来越多,人们注册账号密码的数量也越来越多,很多时候,我都不记得这个平台有没有创建账号密码,这是第一点.还有一点就是,因为很多人不愿意记很多个密码,或者也记不住很多个密码,导致很多 ...

  7. 关于后盾网yii框架的学习小结(10)--使用AR类的增删改查

    创建新的数据库的语句 <?php class CategoryController extends Controller{public function filters(){return arr ...

  8. Vue+Mock.js模拟登录和表格的增删改查

    有三类人不适合此篇文章: "喜欢站在道德制高点的圣母婊" -- 适合去教堂 "无理取闹的键盘侠" -- 国际新闻版块欢迎你去 "有一定基础但又喜欢逼逼 ...

  9. html 记住密码 自动登陆,JavaScript登录记住密码操作(超简单代码)

    废话不多说了,直接给大家贴代码了,具体代码如下所示: 记住密码 记住密码 window.onload = function(){ var oForm = document.getElementById ...

最新文章

  1. hadoop错误: 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
  2. java代码如何能运行起来_Java代码如何运行
  3. ios 设置属性的center_IOS开发-常用UI控件的基本使用(Transform形变属性、frame属性、center属性的使用)...
  4. struts2配置详解(struts.xml配置详解)
  5. [日常] Go语言圣经--Channel习题
  6. Linux图形界面与命令行模式切换
  7. 记一次简单的sql优化
  8. Oracle入门(十四.13)之带参数的游标
  9. mysql log_来吧,了解下mysql有哪些log
  10. ( 设计高效算法 ) 年龄排序 Age Sort Uva 11462
  11. python静态方法,类方法,属性方法,实例方法
  12. 归并排序(二路、递归)
  13. 字符串在Java中_字符和字符串在Java中的旅程
  14. 求01矩阵中的最大的正方形面积
  15. python添加一个球_在Python中创建一个旋转球体
  16. 自学python好找工作么-Python就业前景如何?培训后好找工作吗?
  17. hadoop和spark相关参数的配置
  18. quick-cocos2dx 组件管理器
  19. html中怎样把背景图片置顶,HTML5中背景图片如何设置
  20. css动画旋转加平移实现3D图片墙

热门文章

  1. VPGNet—用于车道线和道路标志检测和识别的消失点引导网络
  2. 什么是物联网?用i.MX8M mini 打造物联网网关
  3. java自动计数_Java 程序 自动计数器
  4. Go数据结构与算法-双向链表
  5. macOS Catalina 10.15.x 无法添加屏幕录制权限解决办法
  6. 【附源码】计算机毕业设计JAVA律师事务管理系统
  7. 如何让大脑放松(IT工作者必看)
  8. 电梯监控项目安装网络摄像机不用布线,试试电梯专用网络传输器
  9. 2021年统考计算机应用基础,2021年电大网考计算机应用基础统考答案-20210511065851.doc-原创力文档...
  10. CC2530 GPIO口编程2 (上拉、下拉,三态)