.net5 core Razor项目实战系列之六:部门管理功能的实现(新增和修改功能)

2021-05-07 02:29

阅读:617

标签:文件   sel   text   reac   构造函数   space   管理   数据保存   put   

本篇实现新增和修改的功能。

在部门列表页增加一个新增按钮,用户点击后弹出一个新增部门的页面 DeptEdit.cshtml,

考虑到修改部门信息的时候可以复用此页面,故在新增的时候传递一个参数 deptid=0,

在列表页每行的末尾增加一个修改按钮,点击的时候调用 DeptEdit.cshtml 页面并传值 deptid=xxx

这样在DeptEdit.cshtml 页可以通过判断是否 deptid>0 来决定页面是做新增还是修改的操作,列表页的效果如下:
技术图片

 

DeptList.cshtml页面代码如下(见红色部分):

@page
@model AuthManagement.Pages.Auth.DeptListModel
@using AuthManagement.DbUtil.Entity
@{
    ViewData["Title"] = "部门管理";
}

"1" width="60%"> "background-color:antiquewhite;height:40px;"> @foreach (TDept item in Model.DeptList) //遍历输出部门信息 { "height:30px;"> } @if (Model.DeptList.Count == 0) { "height:30px;"> }
编号 名称 创建时间 新增部门
@item.DeptId @item.DeptName @item.CreateTime 修改    "/Auth/DeptList?deptid=@item.DeptId" target="_self" onclick="return confirm(‘确定要作废吗?‘);">作废
"4" align="center">没有查询到部门数据!

 

在Auth文件夹下新增 DeptEdit.cshtml 文件,代码如下:

@page
@model AuthManagement.Pages.Auth.DeptEditModel
@{
    Layout = null; //这里不需要使用布局页,设为null就可以了
}

"post"> "width:400px;border-collapse: collapse;border: solid 1px #c0c0c0;"> "background-color:antiquewhite;height:40px;"> "height:30px;border:solid 1px #c0c0c0;"> "height:30px;border:solid 1px #c0c0c0;">
  @Model.SubjectName
"font-size:15px;">     部门名称: "text" style="font-size:15px;" size="25" maxlength="10" name="deptname" value="@Model.DeptName" />
"center">    

 

DeptEdit.cshtml.cs中的编码如下:

namespace AuthManagement.Pages.Auth
{
    public class DeptEditModel : PageModel
    {
        private readonly AuthDbContext _context;

        //构造函数中对AuthDbContext做依赖注入
        public DeptEditModel(AuthDbContext context)
        {
            _context = context;
        }

        public string SubjectName { get; set; }
        public string DeptName { get; set; }

        public void OnGet()
        {
            SubjectName = "新增部门";
            DeptName = "";
            string deptId = Request.Query["deptid"];
            if (int.TryParse(deptId, out int did))
            {
                if (did > 0) 
                { 
                    SubjectName = "修改部门";
                    //如果是修改要初始化部门名称
                    TDept dept = _context.TDepts.Find(did);
                    DeptName = dept.DeptName;                
                }
            }
        }
    }
}

 

运行页面,点新增时画面如下:

技术图片

点修改时画面如下:

技术图片

 

当用户输入部门名称后点"保存"按钮,代码如下:

     public void OnPost()
        {
            string deptName = Request.Form["deptname"];
            string deptId = Request.Query["deptid"];
            if (int.TryParse(deptId, out int did))
            {
                if (did > 0) //传递过来的deptid值 >0 则修改,否则新增。
                {
                    ModifyDept(did, deptName);
                }
                else
                {
                    int newDeptId = AddDept(deptName);
                    deptId = newDeptId.ToString();
                }
            }
            //执行完之后让页面重新加载一下避免用户刷新的时候数据再次回传
            Response.Redirect("/Auth/DeptEdit?deptid="+ deptId);
        }

     //新增部门
        private int AddDept(string deptName)
        {
            TDept dept = new TDept
            {
                DeptName = deptName,
                IsValid = 1,
                CreateTime = DateTime.Now
            };
            _context.TDepts.Add(dept);
            _context.SaveChanges();            

       return dept.DeptId; //返回的部门编号一边刷新页面 }      //修改部门 private void ModifyDept(int deptId, string deptName) { //设置序列化时的对中文的编码方式 JsonSerializerOptions options = new JsonSerializerOptions { Encoder = JavaScriptEncoder.Create(UnicodeRanges.All), }; List logList = GenerateLog(); //初始化包含2条日志信息的列表 //先找出要更改的实体 TDept dept = _context.TDepts.Find(deptId); //将更改前的数据序列化成json后记录下来 logList[0].TableData = JsonSerializer.Serialize(dept, options); //给要更改的属性赋值 dept.DeptName = deptName; dept.ModifyTime = DateTime.Now; //将更改后的数据序列化成json后记录下来 logList[1].TableData = JsonSerializer.Serialize(dept, options);
      
//保存数据到t_log表 _context.TLogs.AddRange(logList); //将更改保存到数据库 _context.SaveChanges(); } /// /// 将更改前和更改后的数据保存到t_log表 /// /// private List GenerateLog() { string batchNo = Guid.NewGuid().ToString(); TLog beforeLog = new TLog { UserId = 6, UserName = "赵六", BatchNo = batchNo, TableName = "t_dept", TableData = "", LogTime = DateTime.Now }; TLog afterLog = new TLog { UserId = 6, UserName = "赵六", BatchNo = batchNo, TableName = "t_dept", TableData = "", LogTime = DateTime.Now }; List logList = new List(); logList.Add(beforeLog); logList.Add(afterLog); return logList; }

 

.net5 core Razor项目实战系列之六:部门管理功能的实现(新增和修改功能)

标签:文件   sel   text   reac   构造函数   space   管理   数据保存   put   

原文地址:https://www.cnblogs.com/pfm33/p/14725219.html


评论


亲,登录后才可以留言!