1.实现简单的增删改查(Asp.Net MVC+Layui)

一、页面效果

1、分页
在这里插入图片描述
2、新增
在这里插入图片描述
3、删除
在这里插入图片描述
4、修改
在这里插入图片描述
5、查询
在这里插入图片描述

二、前期准备

1、新建项目

打开visual studio 2019,选择项目模板
在这里插入图片描述

点击“下一步”
在这里插入图片描述
在这里插入图片描述

2、 在项目中新建文件夹(设置mvc的雏形)

在这里插入图片描述

在这里插入图片描述

创建3个文件夹(BLL、Commons、DAL)在这里插入图片描述

3、连接数据库(SqlServer)

1)在Commons文件夹下添加.cs文件
在这里插入图片描述
在这里插入图片描述

2)读取参数
在这里插入图片描述

在这里插入图片描述

JdbcUtil.cs代码:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
/// <summary>
/// 连接数据库---工具类
/// </summary>
namespace WebApplication5.Commons
{
    public class JdbcUtil
    {
        //与数据库连接,从Web.config中读取参数
        public static string MyConn = ConfigurationManager.AppSettings["connectionstring"];

        public static SqlConnection conn = new SqlConnection(MyConn);
        /// <summary>
        /// 查询数据,查询结束后手动关闭数据库连接
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public SqlDataReader select(string sql)
        {
            SqlDataReader reader = null;
            conn.Open();
            SqlCommand comm = new SqlCommand(sql, conn);
            reader = comm.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            return reader;
        }
        //删除、添加、更改
        public static int ExecuteUpdate(string sql)
        {
            int result = 0;
            conn.Open();
            SqlCommand comm = new SqlCommand(sql, conn);
            result = comm.ExecuteNonQuery();
            conn.Close();
            return result;
        }
        //单条数据的查询
        public static Object ExecteOnlyOneVaule(string sql)
        {
            Object obj = null;
            conn.Open();
            SqlCommand comm = new SqlCommand(sql, conn);
            obj = comm.ExecuteScalar();
            conn.Close();
            return obj;
        }

    }
}

3)在数据库中新建表
use Demo;
create table Student (
Sid int primary key IDENTITY(1,1) ,
Name varchar(50) not null,
Sex varchar(2) not null,
Birthday datetime,
ClassName varchar(30) ,
ProfessionalName varchar(30),
);
在这里插入图片描述
4)在VS2019中建立对应的实体类
在这里插入图片描述
在这里插入图片描述

4、简单的实现查询所有数据功能

1) DAL层(DAL文件夹中)新建项“StudentDAL.cs”

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using WebApplication5.Commons;
using WebApplication5.Models;

namespace WebApplication5.DAL
{
    public class StudentDAL
    {
        /// <summary>
        /// 查询所有的数据--根据搜索参数
        /// </summary>
        /// <returns></returns>
        public List<Student> GetAll(string key)
        {
            List<Student> studentList = new List<Student>();
            JdbcUtil jdbcUtil = new JdbcUtil();

            string query = "select * from Student where 1=1 ";
            if (!string.IsNullOrEmpty(key))//有参数输入参数,进行搜索的功能
            {
                query += string.Format(" and (  Name like '%{0}%' or ClassName like '%{0}%' or ProfessionalName like '%{0}%' ) ", key);
            }
            SqlDataReader data=jdbcUtil.select(query);
            while (data.Read())//将数据读取到,存到list集合中
            {
                Student student = new Student();
                student.Sid = (int)data["Sid"];
                student.Name = (string)data["Name"];
                student.Sex = (string)data["Sex"];
                student.Birthday = (DateTime)data["Birthday"];
                student.ClassName = (string)data["ClassName"];
                student.ProfessionalName = (string)data["ProfessionalName"];
                studentList.Add(student);
            }
            JdbcUtil.conn.Close();//关闭数据库的连接
            return studentList;
        }
    }
}

2) BLL层新建项“StudentBLL.cs”
在这里插入图片描述

3) Controller层新建 " StudentController",

1)选择 添加“控制器
在这里插入图片描述

在这里插入图片描述
2)在StudentController中生成相应的视图
i)代码

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication5.BLL;
using WebApplication5.Commons;
using WebApplication5.Models;

namespace WebApplication5.Controllers
{
    public class StudentController : Controller
    {
        private StudentBLL studentBLL = new StudentBLL();
        // GET: Student
        public ActionResult Index()
        {
            return View();
        }
        /// <summary>
        /// 没有加layui表格的数据展示
        /// </summary>
        /// <returns></returns>
        public ActionResult GetAll()
        {
            string key = "";
           List<Student> students=  studentBLL.GetAll(key);
            return View(students);
        }
      }
 }

ii)操作
在这里插入图片描述
在这里插入图片描述
在Views下自动生成文件夹Student及“GetAll.cshtml”,代码自动生成
在这里插入图片描述

@model IEnumerable<WebApplication5.Models.Student>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Sid)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Sex)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Birthday)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ClassName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ProfessionalName)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Sid)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Sex)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Birthday)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ClassName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProfessionalName)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>

3)效果图
在这里插入图片描述

5、使用Layui改变页面样式

1、 下载layui并导入项目
在这里插入图片描述

压缩包解压,然后将文件夹复制到项目里
在这里插入图片描述
2、修改Views/Shared/_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>后台管理系统 - My ASP.NET Application</title>
    <link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" href="~/layui/css/layui.css">
    <link href="~/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <script src="~/Scripts/modernizr-2.8.3.js"></script>
</head>
<body class="layui-layout-body">
    <div class="layui-layout layui-layout-admin">
        <div class="layui-header">
            <div class="layui-main">
                <div class="layui-logo">后台管理系统</div>
                <ul class="layui-nav" style="position: fixed; top: 0; right: 0; background: none;" lay-filter="nav-top">
                    <li class="layui-nav-item">      
                        <dl class="layui-nav-child">
                            <dd><a href="javascript:;">退出</a></dd>
                        </dl>
                    </li>
                </ul>
            </div>
        </div>
        <div class="layui-side layui-bg-black">
            <div class="layui-side-scroll">
                <ul class="layui-nav layui-nav-tree" lay-filter="navSlide">
                    @Html.Raw(ViewBag.MenuItems)
                   
                </ul>
            </div>
        </div>
        <div class="layui-body">
            <div class="layui-fluid">
                @RenderBody()
                @RenderSection("content", false)
            </div>
        </div>
    </div>
</body>
</html>

3、新建controller(BaseController),----初始化_Layout.cshtml中的值,完成侧边栏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.Mvc;
//进行初始化,其他的Controller是基于此进行
namespace WebApplication5.Controllers
{
    public class BaseController : Controller
    {  
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            SetMenu();
        }
        private void SetMenu()
        {
            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("<li class=\"layui-nav-item {0}\">", "aaaa");
            sb.AppendFormat("<a class='layui-icon {0}' href=\"{1}\">&nbsp&nbsp{2}</a>", "layui-icon-menu-fill", "/Student/Index", "首页");//设置好路由,方便跳转页面
            sb.AppendFormat("</li>");

            sb.AppendFormat("<li class=\"layui-nav-item {0}\">", " ");
            sb.AppendFormat("<a class='layui-icon {0}' href=\"{1}\">&nbsp&nbsp{2}</a>", "layui-icon-set", "/Student/GetAll", "学生管理");
            sb.AppendFormat("</li>");

            sb.AppendFormat("<li class=\"layui-nav-item {0}\">", " ");
            sb.AppendFormat("<a class='layui-icon {0}' href=\"{1}\">&nbsp&nbsp{2}</a>", "layui-icon-user", "/Student/ShowDate", "学生管理w");
            sb.AppendFormat("</li>");
            ViewBag.MenuItems = sb.ToString();
        }
    }
}

4、其他controller 继承BaseController。
5、在StudentController中新建一个方法返回一个页面,使用Layui改变表格整体样式,可以先复制官网范例,然后修改css路径、JS 路径。
6、在StudentController中创建一个方法返回Json数据,在5、的页面中使用该url。
7、数据显示时,生日日期 显示有误,需要改变其格式。
(思路)新建一个类JsonNetResult 继承JsonResult,重写ExecuteResult()方法,从而改变日期格式。

三、代码

1、Commons层

JsonNetResult

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

/// <summary>
/// 在使用json 改变数据格式时,对 日期进行修改(重写 ExecuteResult方法)
/// </summary>
namespace WebApplication5.Commons
{
    public class JsonNetResult : JsonResult
    {
        public object Data { get; set; }
        public string DateTimeFormat { get;  set; }

        public JsonNetResult()
        {
        }

        public JsonNetResult(object dat,JsonRequestBehavior jsonRequest)
        {
            this.Data = dat;
            base.JsonRequestBehavior = jsonRequest;
            this.DateTimeFormat = "yyyy年MM月dd日";
        }
        public override void ExecuteResult(ControllerContext context)
        {
        
            HttpResponseBase response = context.HttpContext.Response;

            response.ContentType = "application/json";
            if (ContentEncoding != null)
                response.ContentEncoding = ContentEncoding;
            if (Data != null)
            {
              /*  JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting.Indented };
                JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings());
                serializer.Serialize(writer, Data);
                writer.Flush();*/

                IsoDateTimeConverter isoDateTimeConverter = new IsoDateTimeConverter();
                //设置日期格式
                isoDateTimeConverter.DateTimeFormat = DateTimeFormat;
                //序列化
                string jsonResult = JsonConvert.SerializeObject(this.Data, isoDateTimeConverter);
                response.Write(jsonResult);
            }
        }

    }
}

2、DAL层

StudentDAL

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using WebApplication5.Commons;
using WebApplication5.Models;

namespace WebApplication5.DAL
{
    public class StudentDAL
    {
        /// <summary>
        /// 查询所有的数据--根据搜索参数
        /// </summary>
        /// <returns></returns>
        public List<Student> GetAll(string key)
        {
            List<Student> studentList = new List<Student>();
            JdbcUtil jdbcUtil = new JdbcUtil();

            string query = "select * from Student where 1=1 ";
            if (!string.IsNullOrEmpty(key))//有参数输入参数,进行搜索的功能
            {
                query += string.Format(" and (  Name like '%{0}%' or ClassName like '%{0}%' or ProfessionalName like '%{0}%' ) ", key);
            }
            SqlDataReader data=jdbcUtil.select(query);
            while (data.Read())//将数据读取到,存到list集合中
            {
                Student student = new Student();
                student.Sid = (int)data["Sid"];
                student.Name = (string)data["Name"];
                student.Sex = (string)data["Sex"];
                student.Birthday = (DateTime)data["Birthday"];
                student.ClassName = (string)data["ClassName"];
                student.ProfessionalName = (string)data["ProfessionalName"];
                studentList.Add(student);
            }
            JdbcUtil.conn.Close();//关闭数据库的连接
            return studentList;
        }




        /// <summary>
        /// 分页--数据
        /// </summary>
        /// <param name="key"></param>
        /// <param name="page"></param>
        /// <returns></returns>
        public List<Student> GetDateByPage(string key,Page page)
        {
            List<Student> studentList = new List<Student>();
            JdbcUtil jdbcUtil = new JdbcUtil();

            string query = string.Format("select * from(select *, ROW_NUMBER()  OVER(order by Sid) as RowId from Student) as b  where  RowId between {0} and {1} ", page.PageSize * (page.PageNum - 1) + 1, page.PageSize * page.PageNum);//RowId between {0} and {1} 。 范围[start,end],start从1开始。如 between 2 and  4==>2、3、4

            if (!string.IsNullOrEmpty(key))//有参数输入参数,进行搜索的功能
            {
                query = string.Format("select * from(select*, ROW_NUMBER() OVER(order by Sid) as RowId from Student where ( Name like '%{0}%' or ClassName like '%{0}%' or ProfessionalName like '%{0}%') ) as b  where RowId between {1} and {2} ", key, page.PageSize * (page.PageNum - 1) + 1, page.PageSize * page.PageNum);
            }
            SqlDataReader data = jdbcUtil.select(query);
            while (data.Read())//将数据读取到,存到list集合中
            {
                Student student = new Student();
                student.Sid = (int)data["Sid"];
                student.Name = (string)data["Name"];
                student.Sex = (string)data["Sex"];
                student.Birthday = (DateTime)data["Birthday"];
                student.ClassName = (string)data["ClassName"];
                student.ProfessionalName = (string)data["ProfessionalName"];
                studentList.Add(student);
            }
            JdbcUtil.conn.Close();//关闭数据库的连接
            return studentList;
        }




        /// <summary>
        /// 根据id判断,学生信息是否已存在
        /// </summary>
        /// <param name="ss"></param>
        /// <returns></returns>
        public bool SelBySid(int ss)
        {
            string query = string.Format( "select * from Student where Sid='{0}' ",ss);
            var IsExitSid = JdbcUtil.ExecteOnlyOneVaule(query);//调用方法,查看该数据是否存在
            if (IsExitSid != null)
            {
                return true;//已存在 该 id
            }
            else { return false; }
        }

        /// <summary>
        /// 新增数据
        /// </summary>
        /// <param name="student"></param>
        /// <returns></returns>
        public bool AddStudent(Student student)
        {
            string insertSql = string.Format("insert into Student values('{0}','{1}','{2}','{3}','{4}','{5}')", student.Sid, student.Name, student.Sex, student.Birthday, student.ClassName, student.ProfessionalName);
            int res=JdbcUtil.ExecuteUpdate(insertSql);
            if (res == 1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
   

        /// <summary>
        /// 编辑学生
        /// </summary>
        /// <param name="student"></param>
        /// <returns></returns>        
        public bool EditStudent(Student student)
        {
            string updSql = string.Format("update Student set Name='{0}',Sex='{1}',Birthday='{2}',ClassName='{3}',ProfessionalName='{4}'  where Sid='{5}' ", student.Name, student.Sex,student.Birthday,student.ClassName, student.ProfessionalName,student.Sid);
            int res = JdbcUtil.ExecuteUpdate(updSql);
            if (res == 1)
            {
                return true;
            }
            else { return false; }
        }
   
    
        /// <summary>
        /// 根据学生id 来删除数据
        /// </summary>
        /// <param name="sid"></param>
        /// <returns></returns>
        public bool DeleteStudent(int sid)
        {
            string delSql = string.Format("delete from Student where Sid='{0}' ", sid);
            int res= JdbcUtil.ExecuteUpdate(delSql);
            if (res == 1)
            {
                return true;
            }
            else { return false; }
        }
    }
}

3、BLL层

StudentBLL

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebApplication5.DAL;
using WebApplication5.Models;

namespace WebApplication5.BLL
{
    public class StudentBLL
    {
        private StudentDAL studentDAL = new StudentDAL();
        public List<Student> GetAll(string key)
        {
            return studentDAL.GetAll(key);
        }
        public List<Student> GetDateByPage(string key, Page page)
        {
            return studentDAL.GetDateByPage(key, page);
        }

        public bool SelBySid(int ss)
        {
            return studentDAL.SelBySid(ss);
        }

        public bool AddStudent(Student student)
        {
            return studentDAL.AddStudent(student);
        }


        public bool EditStudent(Student student)
        {
            return studentDAL.EditStudent(student);
        }


        public bool DeleteStudent(int sid)
        {
            return studentDAL.DeleteStudent(sid);
        }
    }
}

4、Controllers层

StudentController

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication5.BLL;
using WebApplication5.Commons;
using WebApplication5.Models;

namespace WebApplication5.Controllers
{
    public class StudentController : BaseController
    {
        private StudentBLL studentBLL = new StudentBLL();
        // GET: Student
        public ActionResult Index()
        {
            return View();
        }
        /// <summary>
        /// 没有加layui表格的数据展示
        /// </summary>
        /// <returns></returns>
        public ActionResult GetAll()
        {
            string key = "";
           List<Student> students=  studentBLL.GetAll(key);
            return View(students);
        }

        /// <summary>
        /// 使用这个,返回一个页面。(增删改查 在此页面上进行)
        /// </summary>
        /// <returns></returns>
        public ActionResult ShowDate()
        {
            return View();
        }

        /// <summary>
        /// 使用layui 显示数据--只作为一个方法,不能将它作为一个视图!!(没有改日期的格式,调用的是JsonResult返回值)
        /// http://localhost:56959/Student/ShowDate
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult UseLayGetDate(string key)
        {
            List<Student> students = studentBLL.GetAll(key);
            return Json(new { code = 0, data = students, msg = "" });
        }


        /// <summary>
        ///  出生日期的格式已修改。新建一个类JsonNetResult 继承JsonResult,重写ExecuteResult()方法。
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult UseLayGetDate2(string key)
        {
            List<Student> students = studentBLL.GetAll(key);
            //出生日期的格式要修改:
            return  new JsonNetResult(new { code = 0, data = students},JsonRequestBehavior.AllowGet);
        }

       
        /// <summary>
        /// 添加了分页
        /// </summary>
        /// <param name="key"></param>
        /// <param name="layout"></param>
        /// <param name="page"></param>
        /// <param name="limit"></param>
        /// <returns></returns>
        public JsonResult UseLayGetDate3(string key,string[] layout, int page ,int limit)
        {//进行分页,使用那两个参数
            string[] ss = layout;
            Page page1 = new Page();
            page1.PageNum = page;
            page1.PageSize = limit;
            List<Student> students = studentBLL.GetDateByPage(key, page1);
            int Count = studentBLL.GetAll(key).Count;//根据key获得的学生总数
            //出生日期的格式要修改:
            return new JsonNetResult(new { code = 0, count = Count, data = students, msg = "" }, JsonRequestBehavior.AllowGet);
        }




        /// <summary>
        /// 新增学生:先进行判断学号是否已存在
        /// 重点:JsonConvert.DeserializeObject  将string的obj==>指定类数据
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public JsonResult Add(string param)
        {
            int Hcode;
            string Hmsg;
            var ss = param;
            Student student = JsonConvert.DeserializeObject<Student>(param);
            if (studentBLL.SelBySid(student.Sid))
            {
                Hcode = 1;
                Hmsg = "该学号已存在,请重新输入!";
            }
            else
            {
                bool IsAdd = studentBLL.AddStudent(student);
                if (!IsAdd)
                {
                    Hcode = 1;
                    Hmsg = "新增失败";
                }
                else
                {
                    Hcode = 0;
                    Hmsg = "新增成功";
                }
            }
          
            return Json(new { code = Hcode,msg=Hmsg });
        }


        /// <summary>
        /// 修改学生信息
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public JsonResult Edit(string param)
        {
            int Hcode;
            string Hmsg;
            Student student = JsonConvert.DeserializeObject<Student>(param);
          
            bool IsEdit = studentBLL.EditStudent(student);
            if (!IsEdit)
            {
                Hcode = 1;
                Hmsg = "修改失败";
            }
            else
            {
                Hcode = 0;
                Hmsg = "修改成功";
            }
         
            return Json(new { code = Hcode, msg = Hmsg });
        }


        public JsonResult Delete(int sid)
        {
            int Hcode;
            string Hmsg;
           
            bool IsEdit = studentBLL.DeleteStudent(sid);
            if (!IsEdit)
            {
                Hcode = 1;
                Hmsg = "删除失败";
            }
            else
            {
                Hcode = 0;
                Hmsg = "删除成功";
            }

            return Json(new { code = Hcode, msg = Hmsg });
        }

      
    }
}

5、Models层

(1)Page

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

//分页 参数
namespace WebApplication5.Models
{
    public class Page
    {
        public int PageNum { get; set; }//页数
        public int PageSize { get; set; }//每页大小
    }
}

(2)Student

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication5.Models
{
    public class Student
    {
        public int Sid { get; set; }
        public string Name { get; set; }
        public string Sex { get; set; }
        public DateTime Birthday { get; set; }
        public string ClassName { get; set; }
        public string ProfessionalName { get; set; }
    }
}

6、Views/Student

(1)Index.cshtml

<h2>Hello</h2

(2)ShowDate.cshtml

<!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 rel="stylesheet" href="~/layui/css/layui.css" media="all">
    <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>

    <div class="layui-row">
        <div class="layui-col-xs6">
            <div class="grid-demo grid-demo-bg1">
                <div class="SearDiv">
                    搜索参数(姓名、班级名称或者专业名称):
                    <div class="layui-inline">
                        <input class="layui-input" name="id" id="SearParameter" autocomplete="off">
                    </div>
                    <button class="layui-btn " data-type="reload" type="button">

                        <i class="layui-icon layui-icon-search">搜索</i>

                    </button>
                </div>

            </div>
        </div>
        <div class="layui-col-xs6">
            <div class="grid-demo">
                <button class="layui-btn layui-btn-warm" type="button" id="AddBtn">
                    <i class="layui-icon layui-icon-addition">新增</i>
                </button>

            </div>
        </div>
    </div>
    <table id="test" lay-filter="laf_tab"></table>  @*显示数据*@

    <script type="text/html" id="switchTpl">
        <input type="checkbox" name="sex" value="{{d.Sex}}" lay-skin="switch" lay-text="女|男" lay-filter="sexDemo" {{ d.Sex == '女' ? 'checked' : '' }}>
    </script>


    @*新增的弹出层内容,先隐藏*@
    <div class="site-text" style="margin: 5%; display: none" id="AddFormDiv" >
      
   <form class="layui-form" id="AddForm" method="post" lay-filter="example">
         
            <div class="layui-form-item">
                <div class="layui-inline" id="sid_div">
                    <label class="layui-form-label">学号</label>
                    <div class="layui-input-block">
                        <input type="text" name="Sid" id="Sid"  lay-verify="sid" autocomplete="off" placeholder="请输入学号" class="layui-input">
                    </div>
                </div>
                <div class="layui-inline">
                    <label class="layui-form-label">姓名</label>
                    <div class="layui-input-block">
                        <input type="text" name="Name" id="Name" autocomplete="off" placeholder="请输入姓名"  lay-verify="required" class="layui-input">
                    </div>
                </div>
            </div>

            <div class="layui-form-item">
                <div class="layui-inline">
                    <div class="layui-form-item">
                        <label class="layui-form-label">性别</label>
                        <div class="layui-input-block" id="Che">
                            <input type="radio"  name="Sex" value="" title="" checked="">
                            <input type="radio" name="Sex" value="" title="">
                        </div>
                    </div>
                </div>
                <div class="layui-inline">
                    <div class="layui-inline">
                        <label class="layui-form-label">出生日期</label>
                        <div class="layui-input-block">
                            <input type="text" name="date" id="Birthday" autocomplete="off" lay-verify="required" placeholder="yyyy年MM月dd日" class="layui-input">
                        </div>
                    </div>
                </div>
            </div>

            <div class="layui-form-item">
                <div class="layui-inline">
                    <label class="layui-form-label">班级</label>
                    <div class="layui-input-block">
                        <input type="text" name="ClassName" id="ClassName" lay-verify="ClassName" autocomplete="off" placeholder="请输入班级" class="layui-input">
                    </div>
                </div>
                <div class="layui-inline">
                    <label class="layui-form-label">专业</label>
                    <div class="layui-input-block">
                        <input type="text" name="ProfessionalName"  id="ProfessionalName" autocomplete="off"  lay-verify="required" placeholder="请输入专业" class="layui-input">
                    </div>
                </div>
            </div>

        </form>

    </div>






    <script type="text/html" id="barDemo">
        <a class="layui-btn layui-btn-normal  layui-icon  layui-icon-edit" lay-event="edit">编辑</a>
        <a class="layui-btn layui-btn-danger  layui-icon layui-icon-delete" lay-event="del">删除</a>
    </script>

    <script src="~/layui/layui.js" charset="utf-8"></script>
    <!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 -->

    <script>
        layui.use('table', function () {
            var table = layui.table
                , form = layui.form;

            //给表格中的数据进行赋值
            table.render({
                elem: '#test'
              //   , where: { key: ''} //扩展参数,可以传数据到后台

                , method: 'post'  //提交方式
                , url: '/Student/UseLayGetDate3' //修改url路径
                , cellMinWidth: 80//初始化最小列宽
                , cols: [[//显示列名及数据(field值为后台所传递的json数据data里)
                    { type: 'numbers' }
                  //  , { type: 'checkbox' }
                    , { field: 'Sid', title: 'ID', width: 100, unresize: true, sort: true }
                    , { field: 'Name', title: '用户名', align: 'center', templet: '#usernameTpl' }
                    , { field: 'Sex', title: '性别', width: 85, templet: '#switchTpl', unresize: true }
                    , { field: 'Birthday', title: '出生日期', align: 'center', sort: true }
                    , { field: 'ClassName', title: '班级', minWidth: 120, }
                    , { field: 'ProfessionalName', title: '专业', align: 'center' }
                    , { fixed: 'right', width: 250, align: 'center', toolbar: '#barDemo', title: '操作' }
                ]]
                , page: true//开启分页,此时相当于给后端传递了2个参数(page当前页数、limit每页最大数据量)
            });

             
            


            //监听性别操作
            form.on('switch(sexDemo)', function (obj) {
                layer.tips(this.value + ' ' + this.name + ':' + obj.elem.checked, obj.othis);
            });


            //查询---输入的参数
            var $ = layui.$;
            var active = {
                reload: function () {
                    var SearParameter = $('#SearParameter');
                    //执行重载
                    table.reload('test', {//test 当前容器的实例 ==> table.render({.....
                        page: {
                            curr: 1 //重新从第 1 页开始--分页
                        },
                        where: {
                            key: SearParameter.val()
                         }
                    });
                }
            };
            $('.SearDiv .layui-btn').on('click', function () {
                var type = $(this).data('type');
                active[type] ? active[type].call(this) : '';
            });

      

            var t1_sid = document.getElementById('sid_div');//选取id为test的div元素

            
            //监听单元格事件----编辑、删除按钮
            table.on('tool(laf_tab)', function (obj) {
                var data = obj.data;
                console.log(obj);
                if (obj.event === 'edit') {
                   // console.log("编辑");

                    t1_sid.style.display = 'none';// 隐藏选择的元素---将sid隐藏

                    var editLay = layer.open({
                        type: 1 //Page层类型
                        , skin: 'layui-layer-molv'
                        , area: ['700px', '430px']
                        , title: ['修改学生信息', 'font-size:18px']
                        , btn: ['保存', '取消']
                        , shadeClose: true
                        , shade: 0 //遮罩透明度
                        // , maxmin: true //允许全屏最小化
                        , content: $("#AddFormDiv") //一个content的内容,两个layer弹层一起用,区别在于 sid是否可见
                      @*  , success: function () {
                            $("#Sid").val(data.Sid);
                            $("#Name").val(data.Name);
                            $("#ClassName").val(data.ClassName);
                            $("#ProfessionalName").val(data.ProfessionalName);
                            $("#Birthday").val(data.Birthday);
                            //  $("#AddForm")[0].reset();
                        }*@
                        , success: function (layero, index) {
                            $("#Sid").val(data.Sid);
                            $("#Name").val(data.Name);
                            $("#ClassName").val(data.ClassName);
                            $("#ProfessionalName").val(data.ProfessionalName);
                            $("#Birthday").val(data.Birthday);
                            //弹出层---进行校验1、将弹出层的确定按钮 转为layui的form提交按钮  2、写自定义的校验规则 3、通过from.on实现
                            //1.1 条件form标识
                            layero.addClass('layui-form');
                            //1.2 将保存按钮转为提交按钮
                            layero.find('.layui-layer-btn0').attr({
                                'lay-filter': 'formButton',
                                'lay-submit': ''
                            })
                        }
                        , yes: function () {//yes表示定义的第一个按钮
                            //3.1 点击form表单的 "提交"按钮,会先进行自定义的校验
                            form.on('submit(formButton)', function () {

                                var stu = {};
                                var Sid = $("#Sid").val();
                                var Name = $("#Name").val();

                                var ClassName = $("#ClassName").val();
                                var ProfessionalName = $("#ProfessionalName").val();

                                var Birthday = $("#Birthday").val();
                                var Sex = $("#Che input[name='Sex']:checked").val();


                                stu.Sid = Sid;
                                stu.Name = Name;
                                stu.ClassName = ClassName;
                                stu.ProfessionalName = ProfessionalName;
                                stu.Birthday = Birthday;
                                stu.Sex = Sex;
                                //console.log(stu);

                                //  alert(JSON.stringify(stu));
                                $.ajax({
                                    url: '/Student/Edit',
                                    data: {
                                        param: JSON.stringify(stu)
                                    },
                                    type: 'Post',
                                    success: function (res) {
                                        if (res.code === 0) {
                                            layer.close(editLay);//关闭当前窗口

                                            layer.alert(res.msg);
                                            //当前数据进行刷新,新增内容清空
                                            table.reload('test');
                                        }
                                        else {
                                            layer.alert(res.msg);
                                        }
                                    }
                                })
                            })
                        }
                       
                    });

                } else if (obj.event === 'del') {
                    var mm2 = '真的删除该条(学号:' + data.Sid + ')数据吗?';
                    layer.confirm(mm2, function (index) {
                        $.ajax({
                            url: '/Student/Delete',
                            data: {
                                sid: data.Sid
                            },
                            type: 'Post',
                            success: function (res) {
                                if (res.code === 0) {
                                    layer.close(index);
                                    table.reload('test');
                                }
                                else {
                                    layer.close(index);
                                    layer.msg(res.msg, { icon: 5});
                                   // layer.alert(res.msg);
                                }
                            }
                        });

                    });
                }
            });

            //日期显示
            var laydate = layui.laydate;
            //自定义日期格式的用法
            laydate.render({
                elem: '#Birthday'
                ,format: 'yyyy年MM月dd日'
            });
          


            //自定义验证规则
            form.verify({
                ClassName: function (value) {
                    if (value.length < 5) {
                        return '班级至少得5个字符啊';
                    }
                }
                , sid: [
                    /^[\S]{1,4}$/
                    , '学号必须1到4位,且不能出现空格'
                ]
                , content: function (value) {
                    layedit.sync(editIndex);
                }
            });


            var $ = layui.$;
            //新增  按钮事件
            $('#AddBtn').on('click', function () {
                t1_sid.style.display = 'block';// 显示选择的元素---将sid显示出来

                //页面层
                var addLay = layer.open({
                    type: 1 //Page层类型
                    , skin: 'layui-layer-molv'
                    , area: ['700px', '430px']
                    , title: ['新增学生信息', 'font-size:18px']
                    , btn: ['保存', '取消']
                    , shadeClose: true
                    , shade: 0 //遮罩透明度
                    // , maxmin: true //允许全屏最小化
                    , content: $("#AddFormDiv")
                   @* , success: function () {
                        $("#AddForm")[0].reset();

                    }*@
                    , success: function (layero,index) {
                        $("#AddForm")[0].reset();
                        //弹出层---进行校验1、将弹出层的确定按钮 转为layui的form提交按钮  2、写自定义的校验规则 3、通过from.on实现
                        //1.1 条件form标识
                        layero.addClass('layui-form');
                        //1.2 将保存按钮转为提交按钮
                        layero.find('.layui-layer-btn0').attr({
                            'lay-filter': 'formButton',
                            'lay-submit':''
                        })
                    }
                    , yes: function () {//yes表示定义的第一个按钮
                        //3.1 点击form表单的 "提交"按钮,会先进行自定义的校验
                        form.on('submit(formButton)', function () {

                      
                        var stu = {};
                        var Sid = $("#Sid").val();
                        var Name = $("#Name").val();

                        var ClassName = $("#ClassName").val();
                        var ProfessionalName = $("#ProfessionalName").val();

                        var Birthday = $("#Birthday").val();
                        var Sex = $("#Che input[name='Sex']:checked").val();
                        

                        stu.Sid = Sid;
                        stu.Name = Name;
                        stu.ClassName = ClassName;
                        stu.ProfessionalName = ProfessionalName;
                        stu.Birthday = Birthday;
                        stu.Sex = Sex;
                        console.log(stu);
                    
                        //  alert(JSON.stringify(stu));
                      $.ajax({
                            url: '/Student/Add',
                            data: {
                                param: JSON.stringify(stu)
                            },
                            type: 'Post',
                            success: function (res) {
                                if (res.code === 0) {
                                    layer.close(addLay);//关闭当前窗口
                                    //弹出消息框
                                   // layer.alert(res.msg);
                                    layer.msg(res.msg, {
                                        icon: 1,
                                        time: 1500 //1.5秒关闭(如果不配置,默认是3秒)
                                    }, function () {
                                        //当前数据进行刷新,新增内容清空
                                        table.reload('test');
                                    });
                                }
                                else {
                                    layer.msg(res.msg, { icon: 2 });
                                }
                                $("#AddForm")[0].reset();

                            }
                        })

                        })
                    }
                    , btn2: function () {
                        $("#AddForm")[0].reset();
                    }
                });
            });

        });
    </script>

</body>
</html>

四、部分参考

1、Layui官网
http://layui.winxapp.cn/doc/index.html
2、日期格式:
1) https://www.developer.com/microsoft/dealing-with-json-dates-in-asp-net-mvc/
2) https://blog.csdn.net/fangyuan621/article/details/117436917
3、弹出层校验前端数据格式
https://blog.csdn.net/weixin_44427181/article/details/126154909

  • 18
    点赞
  • 134
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
上传图片可以通过在前端页面添加一个文件选择器,让用户选择要上传的图片,然后通过 ASP.NET MVC 的控制器来处理上传操作。下面是一个简单的实例: 1. 在前端页面中添加文件选择器 ```html <form id="uploadForm" enctype="multipart/form-data"> <input type="file" id="fileInput" name="fileInput" /> <button type="submit">上传</button> </form> ``` 2. 在控制器中处理上传操作 ```csharp [HttpPost] public ActionResult Upload(HttpPostedFileBase fileInput) { if (fileInput != null && fileInput.ContentLength > 0) { var fileName = Path.GetFileName(fileInput.FileName); var filePath = Path.Combine(Server.MapPath("~/Uploads"), fileName); fileInput.SaveAs(filePath); return Content("上传成功"); } else { return Content("请选择要上传的文件"); } } ``` 这个控制器的作用是接收上传的文件,并保存到服务器指定的文件夹中。其中 `HttpPostedFileBase` 类型的参数 `fileInput` 对应前端页面中的文件选择器。 3. 使用 LAYUI 实现上传操作 ```javascript layui.use('upload', function(){ var upload = layui.upload; //执行实例 var uploadInst = upload.render({ elem: '#fileInput' //绑定元素 ,url: '/Home/Upload' //上传接口 ,done: function(res){ //上传完毕回调 console.log(res); } ,error: function(){ //请求异常回调 console.log('上传失败'); } }); }); ``` 这里使用了 LAYUI 的 `upload` 模块来实现上传操作。通过 `render` 方法可以将上传功能绑定到前端页面中的文件选择器上,同时还可以指定上传接口和回调函数等参数。 以上就是 ASP.NET MVC + LAYUI 实现上传图片的简单实例和代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值