MVC增删改(二)

1. Home控制器代码

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;
using System.Web.Services.Description;
using Test.Data;
using Test.Data.UIData;
using Test.Services.Services;

namespace Test.Web.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Search(UISearch us)
        {
            //1.将内容补充完整,做测试   //2.先测试跑起来,再补充内容
            //调用数据访问层
            SerachData sd = HomeServices.GetUsers(us);
            //1.写一个专门获取总条数的方法 2.借用一个SerachData类来获取总条数
            //var count = HomeServices.GetUsersCount(us);            
            //Select 一般做数据转换时使用
            var lists = sd.list.Select(p=>new { Id=p.Id,Name=p.Name,Age=p.Age,Role = p.Role, Birthday = p.Birthday.Value.ToString("yyyy-MM-dd")});//将日期转换一下
            return Json(new { code=0,msg="",count=sd.count, data = lists },JsonRequestBehavior.AllowGet);
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <returns></returns>
        public ActionResult AddUser()
        {
            return View();
        }
        [HttpPost]
        public ActionResult AddUser(User us)
        {
            //服务器端验证,再做处理
            if (ModelState.IsValid)
            {
                int r = HomeServices.AddUsers(us);
                if (r>0)
                {
                    return Json(new { success = true, message = "添加成功" });
                }
                else
                {
                    return Json(new { success = false, message = "添加失败" });
                }
            }
            else
            {
                return Json(new { success=false,message="服务器端验证失败"});
            }
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult EditUser(int id)
        {
            User u = HomeServices.GetUsersById(id);
            return View(u);
        }
        [HttpPost]
        public ActionResult EditUser(User us)
        {
            if (ModelState.IsValid)
            {
                int r = HomeServices.EditUser(us);
                if (r > 0)
                {
                    return Json(new { success = true, message = "修改成功" });
                }
                else
                {
                    return Json(new { success = false, message = "修改失败" });
                }
            }
            else
            {
                return Json(new { success = false, message = "服务器端验证失败" });
            }
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        [HttpPost]
        public ActionResult delUser(int Id)
        {
            int u = HomeServices.delUserById(Id);
            if (u > 0)
            {
                return Json(new { success = true, message = "删除成功" });
            }
            else
            {
                return Json(new { success = false, message = "删除失败" });
            }
        }
    }
}

2. Home中Index视图代码


@{
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link href="~/lib/layui/css/layui.css" rel="stylesheet" />
    <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
    @*多条件搜索*@
    <div class="demoTable">
        用户名:
        <div class="layui-inline">
            <input class="layui-input" name="Name" id="Name" autocomplete="off">
        </div>
        角色:
        <div class="layui-inline">
            <select name="Role" id="Role">
                <option value="">请选择</option>
                <option value="老师">老师</option>
                <option value="学生">学生</option>
            </select>
        </div>
        生日:起止时间
        <div class="layui-inline">
            <input class="layui-input" name="StartDate" id="StartDate" autocomplete="off">
        </div>
        -
        结束时间:
        <div class="layui-inline">
            <input class="layui-input" name="EndDate" id="EndDate" autocomplete="off">
        </div>
        <button class="layui-btn" data-type="reload">搜索</button>
    </div>

    @*添加*@
    <div class="layui-btn-group demoTable">
        <button class="layui-btn" data-type="AddUser">添加</button>
    </div>
    <script type="text/html" id="barDemo">
        <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>
    @*表格*@
    <table class="layui-hide" id="LAY_table_user" lay-filter="user"></table>


    <script src="~/lib/layui/layui.js"></script>
    <!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 -->
    <script>
        layui.use('table', function () {
            var table = layui.table;
            var laydate = layui.laydate;
            var layer = layui.layer;
            //常规用法
            laydate.render({
                elem: '#StartDate'
            });
            laydate.render({
                elem: '#EndDate'
            });
            //方法级渲染
            table.render({
                elem: '#LAY_table_user'
                , url: '/Home/Search'
                , cols: [[
                    { checkbox: true, fixed: true }
                    , { field: 'Name', title: '用户名', width: 80 }
                    , { field: 'Age', title: '年龄', width: 80 }
                    , { field: 'Birthday', title: '生日', width: 150 }
                    , { field: 'Role', title: '角色', width: 80 }
                    , { fixed: 'right', width: 178, align: 'center', toolbar: '#barDemo' }
                ]]
                , id: 'testReload'
                , page: true
                , height: 500
            });

            //监听工具条
            table.on('tool(user)', function (obj) {
                var data = obj.data;
                if (obj.event === 'detail') {
                    layer.msg('ID:' + data.id + ' 的查看操作');
                } else if (obj.event === 'del') {
                    layer.confirm('真的删除行么', function (index) {
                        //console.log(data.Id);
                        //假删除,将当前行数据在数据表格中删除+在数据库删除
                        $.post("/home/delUser/", { Id: data.Id }, function (res) {
                            //console.log(res);
                            if (res.success) {
                                layer.msg(res.message);
                                obj.del();
                            } else {
                                layer.msg(res.message);
                            }
                        }, 'json');
                        layer.close(index);
                    });
                } else if (obj.event === 'edit') {
                    //console.log(obj);
                    layer.open({
                        type: 2,
                        area: ["600px", "400px"],
                        content: '/Home/EditUser/' + data.Id //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
                    });
                }
            });

            var $ = layui.$, active = {
                reload: function () {
                    var demoReload = $('#demoReload');
                    //-doigxconsole.log($("#Name").val());
                    //执行重载
                    table.reload('testReload', {
                        page: {
                            curr: 1 //重新从第 1 页开始
                        }
                        , where: {
                            Name: $("#Name").val(),
                            Role: $("#Role").val(),
                            StartDate: $("#StartDate").val(),
                            EndDate: $("#EndDate").val(),
                        }
                    });
                },
                AddUser: function () { //获取选中数据
                    layer.open({
                        type: 2,
                        area: ["600px", "400px"],
                        content: '/Home/AddUser' //这里content是一个URL,如果你不想让iframe出现滚动条,你还可以content: ['http://sentsin.com', 'no']
                    });
                }
            };

            $('.demoTable .layui-btn').on('click', function () {
                var type = $(this).data('type');
                active[type] ? active[type].call(this) : '';
            });
        });
    </script>

</body>
</html>

3. Home中AddUser视图代码

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>AddUser</title>
    <link href="~/lib/layui/css/layui.css" rel="stylesheet" />
</head>
<body>
    <form class="layui-form" action="">
        <div class="layui-form-item">
            <label class="layui-form-label">用户名</label>
            <div class="layui-input-block">
                <input type="text" name="Name" id="Name" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <label class="layui-form-label">角色</label>
            <div class="layui-input-block">
                <select name="Role" id="Role">
                    <option value="">请选择</option>
                    <option value="老师">老师</option>
                    <option value="学生">学生</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">生日</label>
            <div class="layui-input-block">
                <input type="text" name="Birthday" id="Birthday" required lay-verify="required" placeholder="请输入生日" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">年龄</label>
            <div class="layui-input-block">
                <input type="text" name="Age" id="Age" required lay-verify="required" placeholder="请输入年龄" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
            </div>
        </div>
    </form>
<script src="~/lib/layui/layui.js"></script>
<script>
    //Demo
    layui.use('form', function(){
        var form = layui.form;
        var laydate = layui.laydate;
        var $ = layui.$;
        var layer = layui.layer;
        //常规用法
        laydate.render({
            elem: '#Birthday'
        });
            //方法级渲染
      //监听提交
        form.on('submit(formDemo)', function (data) {
        //console.log(JSON.stringify(data.field));
        //layer.msg(JSON.stringify(data.field));
            //四个参数:请求地址,请求参数,回调函数,返回值类型
            console.log(data.field);
            $.post("/home/addUser", data.field, function (res) {
                // console.log(res);
                if (res.success) {
                    layer.msg(res.message);
                    //弹出层关闭,数据表格刷新
                    //当你在iframe页面关闭自身时
                    var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                    parent.layer.close(index); //再执行关闭
                    //让父页面刷新
                    window.parent.location.reload();
                } else {
                    layer.msg(res.message);
                }
            }, 'json');
                     
        return false;
      });
    });
</script>
</body>
</html>

3. Home中EditUser视图代码

@model Test.Data.User

@{
    Layout = null;
}


<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>AddUser</title>
    <link href="~/lib/layui/css/layui.css" rel="stylesheet" />
</head>
<body>
    <form class="layui-form" action="">
        <input type="hidden" name="Id" value="@Model.Id" required  autocomplete="off" class="layui-input">
        <div class="layui-form-item">
            <label class="layui-form-label">用户名</label>
            <div class="layui-input-block">
                <input type="text" name="Name" id="Name" value="@Model.Name" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <label class="layui-form-label">角色</label>
            <div class="layui-input-block">
                <select name="Role" id="Role">
                    <option value="">请选择</option>
                    <option value="老师" @(Model.Role=="老师"?"selected":"")>老师</option>
                    <option value="学生" @(Model.Role=="学生"?"selected":"")>学生</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">生日</label>
            <div class="layui-input-block">
                <input type="text" name="Birthday" id="Birthday"  value="@Model.Birthday" required lay-verify="required" placeholder="请输入生日" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">年龄</label>
            <div class="layui-input-block">
                <input type="text" name="Age" id="Age" value="@Model.Age" required lay-verify="required" placeholder="请输入年龄" autocomplete="off" class="layui-input">
            </div>
        </div>

        <div class="layui-form-item">
            <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formDemo">立即提交</button>
            </div>
        </div>
    </form>
    <script src="~/lib/layui/layui.js"></script>
    <script>
    //Demo
    layui.use('form', function(){
        var form = layui.form;
        var laydate = layui.laydate;
        var $ = layui.$;
        var layer = layui.layer;
        //常规用法
        laydate.render({
            elem: '#Birthday'
        });
            //方法级渲染
      //监听提交
        form.on('submit(formDemo)', function (data) {
        //console.log(JSON.stringify(data.field));
        //layer.msg(JSON.stringify(data.field));
            //四个参数:请求地址,请求参数,回调函数,返回值类型
            $.post("/home/EditUser", data.field, function (res) {
                // console.log(res);
                if (res.success) {
                    layer.msg(res.message);
                    //弹出层关闭,数据表格刷新
                    //当你在iframe页面关闭自身时
                    var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
                    parent.layer.close(index); //再执行关闭
                    //让父页面刷新
                    window.parent.location.reload();
                } else {
                    layer.msg(res.message);
                }
            }, 'json');




        return false;
      });
    });
    </script>
</body>
</html>

4. Test.Services中HomeServices代码

using System;
using System.Collections.Generic;
using System.Data.Entity.Migrations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Test.Data;
using Test.Data.UIData;

namespace Test.Services.Services
{
    /// <summary>
    /// Home数据访问类
    /// </summary>
  public  class HomeServices
    {
        public static SerachData GetUsers(UISearch us)
        {
            SerachData sd = new SerachData();
            using (TestUserEntities db = new TestUserEntities())
            {
                var query = db.User.Where(p=>true);
                //ado.net and where and where
                //先处理分页操作
                int pn, pz;//第几页,每页条数
                if (!int.TryParse(us.page,out pn))
                {
                    pn = 1;
                }
                if (!int.TryParse(us.limit, out pz))
                {
                    pn = 10;
                }

                if (!string.IsNullOrWhiteSpace(us.Name))
                {
                    query = query.Where(p=>p.Name.Contains(us.Name));
                }
                if (!string.IsNullOrWhiteSpace(us.Role))
                {
                    query = query.Where(p => p.Role.Contains(us.Role));
                }
                if (!string.IsNullOrWhiteSpace(us.StartDate))
                {
                    //lmad表达式中不能进行数据类型转换
                    DateTime st = Convert.ToDateTime(us.StartDate);
                    query = query.Where(p=>p.Birthday>=st);
                }
                if (!string.IsNullOrWhiteSpace(us.EndDate))
                {
                    //lmad表达式中不能进行数据类型转换
                    DateTime et = Convert.ToDateTime(us.EndDate);
                    query = query.Where(p => p.Birthday <= et);
                }
                //取分页数据 使用skip时候必须先排序
                sd.count = query.ToList().Count;
                sd.list = query.OrderBy(p => p.Age).Skip((pn - 1) * pz).Take(pz).ToList();
                //return query.OrderBy(p=>p.Age).Skip((pn - 1) * pz).Take(pz).ToList();
                return sd;
            }
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="us"></param>
        /// <returns></returns>

        public static int EditUser(User us)
        {
            using (TestUserEntities db = new TestUserEntities())
            {
                //Users u = db.Users.SingleOrDefault(p=>p.Id==us.Id);
                db.User.AddOrUpdate(us);
                return db.SaveChanges();
            }
        }

        /// <summary>
        /// 显示数据(修改)
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static User GetUsersById(int id)
        {
            using (TestUserEntities db = new TestUserEntities())
            {
                User u = db.User.SingleOrDefault(p=>p.Id==id);
                return u;
            }
        }
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        public static int delUserById(int Id)
        {
            using (TestUserEntities db = new TestUserEntities())
            {
                //删除的实体对象
                User u = db.User.SingleOrDefault(p => p.Id == Id);
                if (u!=null)
                {
                    db.User.Remove(u);
                }
              return  db.SaveChanges();
            }
        }

        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="us"></param>
        /// <returns></returns>
        public static int AddUsers(User us)
        {
            using (TestUserEntities db = new TestUserEntities())
            {
                db.User.Add(us);
                return db.SaveChanges();
            }
        }

        /// <summary>
        /// 总条数
        /// </summary>
        /// <param name="us"></param>
        /// <returns></returns>
        public static object GetUsersCount(UISearch us)
        {

            using (TestUserEntities db = new TestUserEntities())
            {
                var query = db.User.Where(p => true);
                //ado.net and where and where

                if (!string.IsNullOrWhiteSpace(us.Name))
                {
                    query = query.Where(p => p.Name.Contains(us.Name));
                }
                if (!string.IsNullOrWhiteSpace(us.Role))
                {
                    query = query.Where(p => p.Role.Contains(us.Role));
                }
                if (!string.IsNullOrWhiteSpace(us.StartDate))
                {
                    //lmad表达式中不能进行数据类型转换
                    DateTime st = Convert.ToDateTime(us.StartDate);
                    query = query.Where(p => p.Birthday >= st);
                }
                if (!string.IsNullOrWhiteSpace(us.EndDate))
                {
                    //lmad表达式中不能进行数据类型转换
                    DateTime et = Convert.ToDateTime(us.EndDate);
                    query = query.Where(p => p.Birthday <= et);
                }
                return query.ToList().Count;
            }
        }

    }
}

5. Test.Data中UIData文件夹下的类

5.1 SerachData

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test.Data.UIData
{
  public  class SerachData
    {
        public int count { get; set; }
        public List<User> list { get; set; }
    }
}

5.2 UISearch

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test.Data.UIData
{
    /// <summary>
    /// 请求实体类
    /// </summary>
   public class UISearch
    {
        public string Name { get; set; }
        public string Role { get; set; }
        public string StartDate { get; set; }
        public string EndDate { get; set; }
        public string page { get; set; }
        public string limit { get; set; }

    }
}

MVC增删改(一)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

1024节

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

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

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

打赏作者

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

抵扣说明:

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

余额充值