EF登录+首页+列表

1.创建一个MVC中的三层架构:UI层,业务层,数据访问层

 

2.先使用NuGet包添加引用 EntityFramework

然后创建Model的实体类

类似:AdminInfo(AdminInfo,ID,AdminName,AdminPwd等)再根据实体类生成相应的数据库

选择来自数据库的EF设计器点击下一步 

选择新建连接

 

输入自己数据库的服务器名

选择SQL Server 身份验证

输入用户名,密码

选择所需要的数据库

点击确定

是,否都可以(这个这是保存数据库的连接密码)

点击下一步

选择实体框架6.x

点击下一步

选择

点击完成

添加一个Operate类(用来判断值)

public class Operate
    {
        public bool Success { get; set; }
    }

4.创建数据访问层、

使用NuGet包添加引用 EntityFramework

使用类库中的EF 6.x 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 = @"..\\Admin.Mode\Model1.edmx";//地址修改成自己的实体类的路径   
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
#>
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Admin.Mode;//修改成自己的实体类的命名空间
 
namespace Admin.Mode//修改成自己的数据访问层的命名空间
{
   
<#
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
#>
	 public partial class <#=entity.Name#>Repository : BaseRepository<<#=entity.Name#>,PermissionEntities>//BaseRepository、PermissionEntities下面图片说明
     {
		
     }	
<#}#>
}

PermissionEntities在这个里面的类的名称复制过来就可以了

BaseRepository:在数据访问层中添加一个基类

public class BaseRepository<T, TS> where T : class
                            where 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();
        }
 
        //查询一个对象,如果没有返回null
 
        public 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();
 
            }
        }
    }

 

5.创建业务逻辑层

使用NuGet包添加引用 EntityFramework

在业务逻辑层中添加BaseService基类

public class BaseService<T> where T : class
    {
        private BaseRepository<T, PermissionEntities1> baseRepository = new BaseRepository<T, PermissionEntities1>();
 
        //添加单条记录
        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);
        }
 
        //查询一个对象,如果没有返回null
 
        public 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);
        }
    }

在数据访问层中创建一个UserService

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

6.UI层

使用NuGet包添加引用 EntityFramework

Models中创建一个上下文AdminContext如图下:

AdminContext代码

/// <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;
            }
        }
    }

Login页面中使用.ajax跳转控制器调方法  

<!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>
</body>
</html>
<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>

 

创建一个控制器写个登陆方法(保存Cookiesession值)

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;
                //如果选中保存密码则存储cookie
                if (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控制器中的Login方法中去判断是否存在cookie

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();
        }

Index页面中去拿session值欢迎登陆

使用上下文中的值去欢迎登陆

var admin = AdminContext.adminContext.adminInfo;

@using Admin.Models;
@{
    var admin = AdminContext.adminContext.adminInfo;
}
<!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">
                                欢迎光临 @if (admin != null)
                                {@admin.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="http://h-ui.duoshuo.com/admin/" 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="/Home/User" 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">我的桌面</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"></iframe>
            </div>
        </div>
    </section>
 
    <div class="contextMenu" id="Huiadminmenu">
        <ul>
            <li id="closethis">关闭当前 </li>
            <li id="closeall">关闭全部 </li>
        </ul>
    </div>
</body>
</html>

列表的增删改查:

页面代码:

<!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>

增、删、改、查:

在实体层中添加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; }
    }

业务逻辑层创建UserService类:

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

控制器:

public class UserController : Controller
    {
        public UserService user = new UserService();
        #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
    }

过滤器

在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();
        }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例: 1. 创建一个 ASP.NET MVC 项目 2. 在 Models 文件夹下创建一个名为 User.cs 的类,表示用户模型: ```csharp public class User { public int Id { get; set; } public string Name { get; set; } public string Password { get; set; } public string Email { get; set; } } ``` 3. 在 Controllers 文件夹下创建一个名为 UserController.cs 的控制器,用于处理用户相关的逻辑: ```csharp public class UserController : Controller { private readonly ApplicationDbContext _context; public UserController(ApplicationDbContext context) { _context = context; } // GET: User public ActionResult Index() { var users = _context.Users.ToList(); return View(users); } // GET: User/Create public ActionResult Create() { return View(); } // POST: User/Create [HttpPost] [ValidateAntiForgeryToken] public ActionResult Create(User user) { if (ModelState.IsValid) { _context.Users.Add(user); _context.SaveChanges(); return RedirectToAction("Index"); } return View(user); } // GET: User/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var user = _context.Users.Find(id); if (user == null) { return HttpNotFound(); } return View(user); } // POST: User/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit(User user) { if (ModelState.IsValid) { _context.Entry(user).State = EntityState.Modified; _context.SaveChanges(); return RedirectToAction("Index"); } return View(user); } // GET: User/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } var user = _context.Users.Find(id); if (user == null) { return HttpNotFound(); } return View(user); } // POST: User/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public ActionResult DeleteConfirmed(int id) { var user = _context.Users.Find(id); _context.Users.Remove(user); _context.SaveChanges(); return RedirectToAction("Index"); } // GET: User/Login public ActionResult Login() { return View(); } // POST: User/Login [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(string name, string password) { var user = _context.Users.FirstOrDefault(u => u.Name == name && u.Password == password); if (user == null) { ModelState.AddModelError("", "用户名或密码错误"); return View(); } Session["UserId"] = user.Id; return RedirectToAction("Index"); } // GET: User/Logout public ActionResult Logout() { Session.Clear(); return RedirectToAction("Index"); } } ``` 4. 创建视图文件夹,分别在 Views/User 文件夹下创建 Index.cshtml、Create.cshtml、Edit.cshtml、Delete.cshtml、Login.cshtml 文件,用于展示用户列表、添加用户、编辑用户、删除用户和登录页面。 5. 在 Startup.cs 中配置数据库连接: ```csharp public void ConfigureServices(IServiceCollection services) { // ... services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); // ... } ``` 6. 在 appsettings.json 中配置数据库连接字符串: ```json { "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" }, // ... } ``` 7. 运行项目,即可进行增删改查和登录操作。 注意:上述示例中使用了 Entity Framework Core 进行数据访问,需要先安装 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools NuGet 包。另外,为了简化示例,没有进行身份验证和授权,实际项目中需要进行身份验证和授权才能保证数据安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值