用MVC写的查询,添加,删除,修改,登录。

一.SQL数据库代码

CREATE DATABASE MVCLession31
GO
USE MVCLession31
GO
CREATE TABLE Dept (
    DeptId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    DeptName varchar(50)  NOT NULL
);
GO
insert into Dept values('销售部'),('开发部'),('研发部')
CREATE TABLE Employee (
    EmpId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    DeptId int references Dept(DeptId)  NOT NULL,
    EmpName varchar(50)  NOT NULL,
    EmpPhone varchar(50)  NOT NULL,
    EmpArea varchar(50)  NOT NULL,
    EmpSalary decimal(18,2)  NOT NULL
);
GO
insert into Employee values(1,'李四','15914541452','北京',12345),(2,'王麻子','15154541452','北京',22345),(3,'张三','15414541452','北京',52345)
go
CREATE TABLE UserInfo
(
UserId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
UserName varchar(50)  NOT NULL,
Password varchar(50)  NOT NULL
)
go
insert into UserInfo values('123','123456'),('admin','1234567'),('admin2','11234567')

二.查询

1.查询页面

<body>
    <center>
        <h1>员工查询</h1>
        <a href="AddEmpFrom">添加员工</a>
    </center>
    <div>
        <table align="center" border="1" cellspacing="0" width="700">
            <tr>
                <th>员工编号</th>
                <th>部门名称</th>
                <th>员工姓名</th>
                <th>员工电话</th>
                <th>所在地区</th>
                <th>员工薪资</th>
                <th colspan="2">操作</th>
            </tr>
           @foreach (var item in ViewBag.info)
           {
            <tr>
                <td>@item.EmpId</td>
                <td>@item.DeptName</td>
                <td>@item.EmpName</td>
                <td>@item.EmpPhone</td>
                <td>@item.EmpArea</td>
                <td>@item.EmpSalary</td>
                <td><a href="DeleteEmp?EmpId=@item.EmpId" onclick="return confirm('确定删除吗?') ">删除</a></td>
                <td><a href="ExcistEmpFrom?EmpId=@item.EmpId">编辑</a></td>
            </tr>
           }
        </table>
    </div>
</body>

 2.EmployeeViewFrom类

public class EmployeeViewFrom
    {
        public int EmpId { get; set; }
        public string DeptName { get; set; }
        public string EmpName { get; set; }
        public string EmpPhone { get; set; }
        public string EmpArea { get; set; }
        public Nullable<decimal> EmpSalary { get; set; }
    }

3.Home控制器中的Index方法

public ActionResult Index()
        {
            //ViewBag.info = db.Employee;
            ViewBag.info = from e in db.Employee
                           join d in db.Dept on e.DeptId equals d.DeptId
                           select new EmployeeViewFrom
                           {
                               EmpId =e.EmpId,
                               EmpName =e.EmpName,
                               EmpPhone =e.EmpPhone,
                               EmpArea =e.EmpArea,
                               EmpSalary =e.EmpSalary,
                               DeptName =d.DeptName
                           };
            return View();
        }

4.运行结果

三.添加

 1.添加页面

<body>
    <center>
        <h1>添加员工</h1>
    </center>
    <div>
        <form action="AddEmp" method="post">
            <table align="center" cellspacing="0" border="1" width="500">
                <tr>
                    <th>所属部门:</th>
                    <td>
                        <select name="DeptId">
                            <option value="0">--请选择--</option>
                            @foreach (var imte in ViewBag.info)
                            {
                                <option value="@imte.DeptId">@imte.DeptName</option>
                            }
                        </select>
                    </td>
                </tr>
                <tr>
                    <th>员工姓名:</th>
                    <td>
                        <input type="text" name="EmpName" value="" />
                    </td>
                </tr>
                <tr>
                    <th>员工电话:</th>
                    <td>
                        <input type="text" name="EmpPhone" value="" />
                    </td>
                </tr>
                <tr>
                    <th>所在地区:</th>
                    <td>
                        <input type="text" name="EmpArea" value="" />
                    </td>
                </tr>
                <tr>
                    <th>员工薪资:</th>
                    <td>
                        <input type="text" name="EmpSalary" value="" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" name="name" value="添加员工" /></td>
                </tr>
            </table>
        </form>
    </div>
</body>

2.Home控制器中的AddEmp方法与AddEmpFrom方法

//添加员工页面显示
        public ActionResult AddEmpFrom()
        {
            ViewBag.info = db.Dept;
            return View();
        }
        //添加员工
        public ActionResult AddEmp()
        {
            Employee emp = new Employee()
            {
                DeptId = int.Parse(Request["DeptId"]),
                EmpName = Request["EmpName"],
                EmpPhone = Request["EmpPhone"],
                EmpArea = Request["EmpArea"],
                EmpSalary =decimal.Parse(Request["EmpSalary"])
            };
            db.Employee.Add(emp);
            int i = db.SaveChanges();
            if (i>0)
            {
                return Content("<script>alert('添加成功');window.location.href='Index';</script>");
            }
            else
            {
                return Content("<script>alert('添加失败');window.location.href='AddEmpFrom';</script>");
            }
        }

3.运行结果

 三.删除

1.Home控制器中的DeleteEmp方法

//删除员工
//简单写法以注释
        public ActionResult DeleteEmp()
        {
            int empid = int.Parse(Request["EmpId"]);
            //var emp = db.Employee.Find(empid);
            //db.Employee.Remove(emp);
            //int i = db.SaveChanges();
            string sql = "delete from Employee where EmpId = @EmpId";
            SqlParameter parameter = new SqlParameter("@EmpId", empid);
            int i = db.Database.ExecuteSqlCommand(sql, parameter);
            if (i > 0)
            {
                return Content("<script>alert('删除成功');window.location.href='Index';</script>");
            }
            else
            {
                return Content("<script>alert('删除失败');window.location.href='Index';</script>");
            }
        }

2.运行结果

 

 

四.修改

1.修改页面

<body>
    <center>
        <h1>编辑员工</h1>
    </center>
    <div>
        <form action="ExcistEmp" method="post">
            <input type="hidden" name="EmpId" value="@ViewBag.empinfo.EmpId" />
            <table align="center" cellspacing="0" border="1" width="500">
                <tr>
                    <th>所属部门:</th>
                    <td>
                        <select name="DeptId">
                            <option value="0">--请选择--</option>
                            @foreach (var item in ViewBag.info)
                            {
                                <option value="@item.DeptId">@item.DeptName</option>
                            }
                        </select>
                    </td>
                </tr>
                <tr>
                    <th>员工姓名:</th>
                    <td>
                        <input type="text" name="EmpName" value="@ViewBag.empinfo.EmpName" />
                    </td>
                </tr>
                <tr>
                    <th>员工电话:</th>
                    <td>
                        <input type="text" name="EmpPhone" value="@ViewBag.empinfo.EmpPhone" />
                    </td>
                </tr>
                <tr>
                    <th>所在地区:</th>
                    <td>
                        <input type="text" name="EmpArea" value="@ViewBag.empinfo.EmpArea" />
                    </td>
                </tr>
                <tr>
                    <th>员工薪资:</th>
                    <td>
                        <input type="text" name="EmpSalary" value="@ViewBag.empinfo.EmpSalary" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center"><input type="submit" name="name" value="修改员工" /></td>
                </tr>
            </table>
        </form>
    </div>
</body>

2.Home控制器中的ExcistEmpFrom方法和ExcistEmp

//编辑员工页面显示
        public ActionResult ExcistEmpFrom()
        {
            int empid = int.Parse(Request["EmpId"]);
            ViewBag.empinfo = db.Employee.Find(empid);
            ViewBag.info = db.Dept;
            return View();
        }
//编辑员工
        public ActionResult ExcistEmp()
        {
            int empid = int.Parse(Request["EmpId"]);
            var emp = db.Employee.Find(empid);
            emp.DeptId = int.Parse(Request["DeptId"]);
            emp.EmpName = Request["EmpName"];
            emp.EmpPhone = Request["EmpPhone"];
            emp.EmpArea = Request["EmpArea"];
            emp.EmpSalary = decimal.Parse(Request["EmpSalary"]);
            int i = db.SaveChanges(); 
            if (i > 0)
            {
                return Content("<script>alert('编辑成功');window.location.href='Index';</script>");
            }
            else
            {
                return Content("<script>alert('编辑失败');window.location.href='Index';</script>");
            }
        }

3.运行结果

 五.登录

1.先在配置文件Web.config找到 

<system.web>

<compilation debug="true" targetFramework="4.5" />

<httpRuntime targetFramework="4.5" />

</system.web>在里面写

 <authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="3000"></forms> 

</authentication>。配图如下:

 2.在Controllers文件夹里建AccountController控制器

3.在所建项目中添加文件夹Filter,在文件夹Filter添加类MyExceptionFilter.cs里面后继承 HandleErrorAttribute类,重写HandleErrorAttribute类里的OnException方法

代码如下:

//引用using System.Web.Mvc;命名空间
//MyExceptionFilter类继承HandleErrorAttribute类
//重写HandleErrorAttribute类里的OnException方法
 public class MyExceptionFilter : HandleErrorAttribute
    {
        public override void OnException(ExceptionContext filterContext)
        {
            filterContext.Result = new RedirectResult("~/Account/LogOut");
            filterContext.ExceptionHandled = true;
            return;
        }
    }

4.HomeController控制器控制器下的Index页面是整个项目的首页,不需要登录就可以查看

代码如下:

<body>
    <div>
        首页
        @Html.ActionLink("登录", "LogOn", "Account")
        @Html.ActionLink("员工查询", "Index", "Account")
        @Html.ActionLink("退出", "LogOut", "Account")
    </div>
</body>

 页面效果图

 

5.在AccountController控制器里面添加LogOn,LogOut页面 。AccountController控制器里面Index页面是登录之后才能看到的页面。三个页面代码如下:

(1)LogOn页面里需要引用语法@model (项目名称).Models.(数据库里的表名)

例:@model MVC登录.Models.UserInfo

@model MVC登录.Models.UserInfo
<body>
    <div style="text-align:center">
        @using (Html.BeginForm())
        {
            <table width="500" cellspacing="0" border="1" align="center">
                <tr>
                    <td colspan="3" align="center">用户登录</td>
                </tr>
                <tr>
                    <td>用户名:</td>
                    <td>@Html.TextBoxFor(u => u.UserName)</td>
                    <td style="color:red">@Html.ValidationMessageFor(u => u.UserName)</td>
                </tr>
                <tr>
                    <td>密码:</td>
                    <td>@Html.PasswordFor(u => u.Password)</td>
                    <td style="color:red">@Html.ValidationMessageFor(u => u.Password)</td>
                </tr>
                <tr>
                    <td colspan="3" align="center"><input type="submit" value="登录" /></td>
                </tr>
                <tr>
                    <td colspan="3" style="color:red">
                        @Html.ValidationSummary(true)
                    </td>

                </tr>
            </table>
        }
    </div>
</body>

页面效果图

 (2)LogOut页面

<body>
    <div>
        @Html.ActionLink("首页", "Index", "Home")
        <div>
            <img src="~/Img/2022-05-20_113017.png" width="100%" />
        </div>
    </div>
</body>

(3.Index页面

<div> 
        用户设置
        @Html.ActionLink("主页","Index","Home")
    </div>

6.在Models数据模型Model1.edmx下的Model1.tt里面找UserInfo.cs类,给属性添加验证

代码如下:

    using System.ComponentModel.DataAnnotations;
 public partial class UserInfo
    {
        public int UserId { get; set; }
        [Required(ErrorMessage = "用户名不能为空")]
        public string UserName { get; set; }
        [Required(ErrorMessage = "密码不能为空")]
        [DataType(DataType.Password)]
        public string Password { get; set; }
    }

7.在AccountController控制器里面添加LogOn,LogOut,Index方法

三个方法代码如下:

 public class AccountController : Controller
    {
        // GET: Account
        MVCLession31Entities db = new MVCLession31Entities();
        //登录之后才能看到的页面
        [Authorize]
        public ActionResult Index()
        {
            //ViewBag.info = db.Employee;
            ViewBag.info = from e in db.Employee
                           join  d in db.Dept on e.DeptId equals d.DeptId
                           select new EmpViewForm
                           {
                               EmpId = e.EmpId,
                               DeptName = d.DeptName,
                               EmpName = e.EmpName,
                               EmpPhone =e.EmpPhone,
                               EmpArea = e.EmpArea,
                               EmpSalary =e.EmpSalary
                           };
            return View();
        }
        //登录页面
        public ActionResult LogOn()
        {
            return View();
        }
        //在post表单请求下执行的登录方法
        [HttpPost]
        public ActionResult LogOn(UserInfo u)
        {
            if (ModelState.IsValid && ValidateUser(u.UserName, u.Password))
            {
                //添加票证
                FormsAuthentication.SetAuthCookie(u.UserName, false);
                return RedirectToAction("Index");
            }
            ModelState.AddModelError("", "账号或者密码错误");
            return View();
        }
        //与数据库连接的方法
        private bool ValidateUser(string name, string pwd)
        {
            using (MVCLession31Entities db = new MVCLession31Entities())
            {
                var u = (from p in db.UserInfo where p.UserName == name && p.Password == pwd select p).FirstOrDefault();
                if (u == null)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        [MyExceptionFilter]
        //退出页面
        public ActionResult LogOut()
        {
            FormsAuthentication.SignOut();
            return View();
        }

8.运行视频

运行结果

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@s.l.z.x.*^_^*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值