MVC使用EF实现后台登录首页以及列表增删改查

数据库设计

CREATE DATABASE [InfoManagerSystem]
GO
USE [InfoManagerSystem]
GO
/****** Object:  Table [dbo].[User]    Script Date: 10/15/2019 08:14:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[User](
	[UserName] [varchar](200) NOT NULL,
	[UserPwd] [varchar](200) NOT NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT [dbo].[User] ([UserName], [UserPwd]) VALUES (N'Admin', N'Admin')
/****** Object:  Table [dbo].[InfoManager]    Script Date: 10/15/2019 08:14:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[InfoManager](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Title] [varchar](200) NOT NULL,
	[Sort] [varchar](200) NOT NULL,
	[Source] [varchar](200) NOT NULL,
	[Browser] [bigint] NULL,
	[Status] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[InfoManager] ON
INSERT [dbo].[InfoManager] ([ID], [Title], [Sort], [Source], [Browser], [Status]) VALUES (1, N'老人与海', N'经典文学', N'湖南科技出版社', 2000, 1)
SET IDENTITY_INSERT [dbo].[InfoManager] OFF

创建MVC项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**

创建分层并添加引用

**
实体层(Mode)
无引用,需要使用EntityFramework,使用NuGet安装

数据访问层(Dal)
引用实体层,需要使用EntityFramework,使用NuGet安装

业务逻辑层(Bll)
引用实体层,数据访问层,需要使用EntityFramework,使用NuGet安装

UI层(Web)
引用实体层,业务逻辑层,需要使用EntityFramework,使用NuGet安装
搭建完成后如图
在这里插入图片描述
登录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" />
    <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" />
    <link rel="stylesheet" href="~/Scripts/static/common/layui/css/layui.css" />
    <title>后台登录</title>
    <meta name="keywords" content="网站后台模版,后台模版下载,后台管理系统模版,HTML后台模版下载">
    <meta name="description" content="是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">
</head>
<body>
    <input type="hidden" id="TenantId" name="TenantId" value="" />
    <div class="header"></div>
    <div class="loginWraper">
        username
        <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="username" 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">
                    <div class="formcontrols col-xs-8 col-xs-offset-3">
                        <input class="input-text size-l" type="text" id="code" placeholder="验证码" οnblur="if(this.value==''){this.value='验证码:'}" οnclick="if(this.value=='验证码:'){this.value='';}" value="验证码:" style="width:150px;">
                        <canvas id="canvas" width="100" height="38"></canvas>
                    </div>
                    <div class="row cl">
                        <div class="formControls col-xs-8 col-xs-offset-3">
                            <label for="online">
                                <input type="checkbox" name="online" id="online" value="">
                                记住密码
                            </label>
                        </div>
                    </div>
                    <div class="row cl">
                        <div class="formControls col-xs-8 col-xs-offset-3">
                            <input name="" type="submit" class="btn btn-success radius size-L" id="login_btn" 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 class="footer">Copyright 你的公司名称</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 src="~/assets/layer/layer.js" type="text/javascript"></script>
        <script src="~/Scripts/static/common/layui/layui.js"></script>
        <script src="~/Scripts/static/admin/js/canvas.js"></script>
        <script>
            var _hmt = _hmt || [];
            (function () {
                var hm = document.createElement("script");
                hm.src = "https://hm.baidu.com/hm.js?080836300300be57b7f34f4b3e97d911";
                var s = document.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(hm, s);
            })();
        </script>
 
 
</body>
</html>
<script>
    $(function () {
        //页面加载刷新验证码
        var show_num = [];
        draw(show_num);
 
        //点击图片刷新验证码
        $("#canvas").on('click', function () {
            draw(show_num);
        })
 
        layui.use('form', function () {
            var form = layui.form,
                layer = layui.layer,
                $ = layui.jquery;
        });
 
        $("#login_btn").click(function () {
            var data = {};
            data.UserName = $("#username").val();
            data.UserPwd = $("#pwd").val();
            //验证码校验
            var val = $("#code").val().toLowerCase();
            var num = show_num.join("");
            if (val == '') {
                layer.alert('请输入验证码!');
            } else if (val != num) {
                layer.alert('验证码错误!请重新输入!');
                $("#code").val('');
                draw(show_num);
            }
            else {
                $.ajax({
                    data: data,
                    type: "post",
                    url: "/AdminUser/Query",
                    success: function (result) {
                        if (result.Success) {
                            layer.alert('登录成功!', {
                                title: '提示框',
                                icon: 1,
                            });
                            location.href = "/Home/Index";
                            layer.close(index);
                        } else {
                            layer.alert('登录失败!', {
                                title: '提示框',
                                icon: 1,
                            });
                        }
                    }
                })
            }
 
        })
 
    });
 
</script>

主页HTML代码

@{
    Layout = null;
}
@using Zhongjiali.ManagerSys.Web.Models;
@using Zhongjiali.ManagerSys.Modles;
 
@{
    ViewBag.Title = "Home Page";
    var admin = AdminContext.context.adminUser;
}
<!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" />
    <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" />
    <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>
    <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:;" οnclick="article_add('添加资讯','article-add.html')"><i class="Hui-iconfont">&#xe616;</i> 资讯</a></li>
                                <li><a href="javascript:;" οnclick="picture_add('添加资讯','picture-add.html')"><i class="Hui-iconfont">&#xe613;</i> 图片</a></li>
                                <li><a href="javascript:;" οnclick="product_add('添加资讯','product-add.html')"><i class="Hui-iconfont">&#xe620;</i> 产品</a></li>
                                <li><a href="javascript:;" οnclick="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.UserName}
                                <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="articlelist" 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="AdminList" 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>
    <!--_footer 作为公共模版分离出去-->
    </body>
</html>
 
    <script type="text/javascript">
        $(function () {
           
        });
        /*个人信息*/
        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>

**

Mode层

**
使用EF
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**

搭建完成后自动生成的实体类如下

**
User类

namespace DaysGone.ManagerSys.Mode
{
    using System;
    using System.Collections.Generic;
    
    public partial class User
    {
        public string UserName { get; set; }
        public string UserPwd { get; set; }
    }
}

InfoManager类

namespace DaysGone.ManagerSys.Mode
{
    using System;
    using System.Collections.Generic;
    
    public partial class InfoManager
    {
        public int ID { get; set; }
        public string Title { get; set; }
        public string Sort { get; set; }
        public string Source { get; set; }
        public Nullable<long> Browser { get; set; }
        public Nullable<int> Status { get; set; }
    }
}

Result类

namespace DaysGone.ManagerSys.Mode
{
    public class OperateResult
    {
        public bool Success;
    }
}

**

数据访问层

**
数据访问层需要引用Mode层
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 DaysGone.ManagerSys.Dal
{
    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();
 
            }
        }
    }
}

UserRepository类

	 public partial class UserRepository : BaseRepository<User,InfoManagerSystemEntities>
     {
		
 
     }	

InfoManagerRepository类

	 public partial class InfoManagerRepository : BaseRepository<InfoManager,InfoManagerSystemEntities>
    {
		
 
    }

**

业务逻辑层

**
BaseService类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using DaysGone.ManagerSys.DAL;
using DaysGone.ManagerSys.Mode;
 
namespace DaysGone.ManagerSys.Bll
{
    public class BaseService<T> where T : class
    {
        private BaseRepository<T, InfoManagerSystemEntities> baseRepository = new BaseRepository<T, InfoManagerSystemEntities>();
 
        //添加单条记录
        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);
        }
    }
}

InfoManagerService类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DaysGone.ManagerSys.Mode;
 
namespace DaysGone.ManagerSys.Bll
{
    public class InfoManagerService : BaseService<InfoManager>
    {
        public InfoManager SelectInfoMangers(int id)
        {
            return Query(a => a.ID == id);
 
        }
    }
}

**AdminUserService类

**

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DaysGone.ManagerSys.Mode;
 
namespace DaysGone.ManagerSys.Bll
{
   public class AdminUserService : BaseService<User>
    {
        /// <summary>
        /// 记住密码
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public User AdminByReader(User users)
        {
            return Query(a => a.UserName == users.UserName && a.UserPwd == users.UserPwd);
        } 
    }
}

**

UI层

**
AdminContext类(Models文件夹内

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using DaysGone.ManagerSys.Modles;
 
namespace DaysGone.ManagerSys.Web.Models
{
    public class AdminContext
    {
        /// <summary>
        /// 设置key值
        /// </summary>
        private const string sessionKey = "AdminInfo_session_Key";
        public HttpSessionState httpSession => HttpContext.Current.Session;
        /// <summary>
        /// 设置静态 上下文
        /// </summary>
        public static AdminContext context = new AdminContext();
        /// <summary>
        /// 设置用户表
        /// </summary>
 
        public User adminUser
        {
            get
            {
                return httpSession[sessionKey] as User;
            }
            set
            {
                httpSession[sessionKey] = value;
            }
        }
    }
}

ResultDataSet类(Models文件夹内)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace DaysGone.ManagerSys.Web.Models
{
    public class ResultDataSet<T>
    {
        public int code { get; set; }
        public string msg { get; set; }
        public int count { get; set; }
        public List<T> data { get; set; }
    }
}

**

过滤器(Attributes文件夹内)

**
行为过滤器(ActionAttribute)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DaysGone.ManagerSys.Web.Models;
 
namespace DaysGone.ManagerSys.Web.Attributes
{
   public class ActionAttribute : ActionFilterAttribute  //行为过滤器
    {
        /// <summary>
        /// 调用控制器对应的Action方法之后的操作
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
            if (AdminContext.context.adminUser != null)
            {
                //获取用户名
                string username = AdminContext.context.adminUser.UserName;
                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.context.adminUser != null)
            {
                string username = AdminContext.context.adminUser.UserName;
                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)
        {
 
        }
 
 
    }
}

异常过滤器(ExceptionAttribute)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
 
namespace DaysGone.ManagerSys.Web.Attributes
{
    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);
        }
    }
}

权限过滤器(PermissionAttribute)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using DaysGone.ManagerSys.Web.Models;
 
namespace DaysGone.ManagerSys.Web.Attributes
{
    public class PermissionAttribute : AuthorizeAttribute  //权限过滤器
    {
        /// <summary>
        /// 判断认证是否通过
        /// </summary>
        /// <param name="httpContext"></param>
        /// <returns></returns>
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            //如果上下文不为空
            if (AdminContext.context.adminUser != 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);
 
        }
    }
}

**

控制器(Controllers文件夹内)

**
AdminUserController类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using DaysGone.ManagerSys.Mode;
using DaysGone.ManagerSys.Bll;
using DaysGone.ManagerSys.Web.Models;
 
namespace DaysGone.ManagerSys.Web.Controllers
{
    public class AdminUserController : Controller
    {
 
        public JsonResult Add(InfoManager infoManager)
        {
            ModueService modueService = new ModueService();
            OperateResult operateResult = new OperateResult
            {
                Success = modueService.Add(infoManager)
            };
            return Json(operateResult);
        }
 
        //修改
        public JsonResult Update(InfoManager infoManager)
        {
            InfoManagerService infoManagerService = new InfoManagerService();
            OperateResult operateResult = new OperateResult
            {
                Success = infoManagerService.Update(infoManager)
            };
            return Json(operateResult);
        }
 
        #region 登陆操作
        /// <summary>
        /// 登陆
        /// </summary>
        /// <param name="name"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public JsonResult Query(User users)
        { 
            AdminUserService adminUserService = new AdminUserService();
            OperateResult result = new OperateResult();
            User user = users;
            Expression<Func<User, bool>> lambdaExpression = a => a.UserName==users.UserName && a.UserPwd==users.UserPwd;
            //调用业务层的lamdam表达式的记住密码
            user= adminUserService.AdminByReader(user);
            result.Success = adminUserService.Query(lambdaExpression) != null;
            if(result.Success)
            {
                //创建Cookie对象
                HttpCookie httpCookie = new HttpCookie("CookieName");
                httpCookie.Values.Add("UserName", user.UserName);
                httpCookie.Values.Add("UserPwd", user.UserPwd);
               
                //设置过期时间
                httpCookie.Values.Add("time",DateTime.Now.AddDays(7).ToString());
                //添加Cookie对象
                System.Web.HttpContext.Current.Response.Cookies.Add(httpCookie);
            }
            //给上下文赋值
            AdminContext.context.adminUser = user;
            return Json(result);
        }
        #endregion
 
        //删除单条数据
        public JsonResult DELETE(InfoManager infoManager)
        {
            ModueService modueService = new ModueService();
            OperateResult operateResult = new OperateResult
            {
                Success = modueService.DELETE(infoManager)
            };
            return Json(operateResult);
        }
 
 
        /// <summary>
        /// 去除session和cookie
        /// </summary>
        /// <returns></returns>
        #region 去除session和cookie
        public ActionResult AdminOut()
        {
            //清除session
            AdminContext.context.adminUser = null;
            //获取cookie
            HttpCookie cok = Response.Cookies["UserName"];
            if (cok != null)
            {
                cok.Values.Clear();
            }
            return Redirect("/Home/login");
        }
        #endregion
 
        //分页查询
        public JsonResult GetMoudelList(int page, int limit)
        {
            InfoManagerService infoManagerService = new InfoManagerService();
            ResultDataSet<InfoManager> resultDataSet = new ResultDataSet<InfoManager>
            {
                code = 0,
                msg = string.Empty,
                count = 0
            };
            int count = 0;
            List<InfoManager> modules = new List<InfoManager>();
            Expression<Func<InfoManager, bool>> whereLambda = a =>true;
            Expression<Func<InfoManager, int>> orderbyLambda = a => a.ID;
            resultDataSet.data = infoManagerService.QuerypageList(page, limit, whereLambda, orderbyLambda, out count);
            return Json(resultDataSet,JsonRequestBehavior.AllowGet);
        }
        // GET: AdminUser
        public ActionResult Index()
        {
            return View();
        }
    }
}

HomeController类(Controllers文件夹内)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using DaysGone.ManagerSys.Mode;
using DaysGone.ManagerSys.Bll;
using DaysGone.ManagerSys.Web.Attributes;
using DaysGone.ManagerSys.Web.Models;
 
namespace DaysGone.ManagerSys.Web.Controllers
{
    public class HomeController : Controller
    {
        [PermissionAttribute]
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult adminlist()
        {
            return View();
        }
        
       public ActionResult articleadd()
        {
            
            return View();
 
        }
 
        public ActionResult articlelist()
        {
            return View();
        }
 
        public ActionResult login()
        {
            HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies.Get("CookieName");
            if (cookie != null)
            {
                string name = cookie["UserName"];//等同于string name = cookie.Values.Get("UserName");
                string pwd = cookie["UserPwd"];
                DateTime time = DateTime.Parse(cookie["time"]);
 
                if (name != null && pwd != null && time != null && DateTime.Now < time)
                {
                    //将Cookie中的值赋给上下文session  使其在不登录时页面也能够显示
                    AdminContext.context.adminUser = new User()
                    {
                        UserName = name,
                        UserPwd = pwd
                    };
                    return Redirect("/Home/Index");
                }
            }
 
 
 
 
 
 
            return View();
        }
 
        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
 
            return View();
        }
 
        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";
 
            return View();
        }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值