首页 > 编程语言 >ASP.NET Core MVC 接上篇新增加“增删改查”操作

ASP.NET Core MVC 接上篇新增加“增删改查”操作

时间:2024-06-07 12:01:47浏览次数:26  
标签:Core ASP return int db 改查 id list public

前言

由于上一篇文章只写了怎么创建项目以及一个查询操作,这篇文章将把增删改查的操作补齐,希望能帮助到一同学习的小伙伴,内容中如有不懂的点,可参考ASP.NET Core官方文档,如有写的不对的,请在评论区补充,主打听劝;

增删改查
接口类
    public interface IGetService<T> where T : class
    {
        /// <summary>
        /// 查询
        /// </summary>
        /// <returns></returns>
        List<T> GetIDservice(string name);

        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="a">插入的对象</param>
        /// <returns></returns>
        int AddService(T a);

       /// <summary>
       /// 修改
       /// </summary>
       /// <param name="u">对象</param>
       /// <returns></returns>
        int UpServeice(T u);

       /// <summary>
       /// 删除
       /// </summary>
       /// <param name="id">对象ID</param>
       /// <returns></returns>
        int DelServive(int id);

        /// <summary>
        /// 根据ID查询对象
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        T GetValue(int id);
    }
实现类
    public class GetsService : IGetService<Student>
    {
        private readonly WebDbContext _db;
        public GetsService(WebDbContext db)
        {
            _db = db;
        }

        //新增方法
        public int AddService(Student a)
        {
            _db.Students.Add(a);
            return _db.SaveChanges();

        }

        //删除方法
        public int DelServive(int id)
        {
            _db.Students.Remove(new Student { Id=id});
            return _db.SaveChanges();
        }

        //查询所有或根据id进行查询
        public List<Student> GetIDservice(string name)
        {
            var list=_db.Students.ToList();
            if (!string.IsNullOrEmpty(name))
            {
                list=list.Where(x => x.Name!.Contains(name)).ToList();
            }
            return list;
        }
        //根据id查询信息
        public Student GetValue(int id)
        {
           return _db.Students.First(x => x.Id==id); 
        }

        //修改方法
        public int UpServeice(Student u)
        {
           var list =_db.Students.Where(e=>e.Id==u.Id).First();
            list.Name= u.Name;
            list.Age=u.Age;
            list.Sex=u.Sex;
            list.Address=u.Address;
            return _db.SaveChanges();
        }
        
    }
控制器
    public class StudentController : Controller
    {
        private readonly IGetService<Student> _service;
        public StudentController(IGetService<Student> service)
        {
            _service = service;
        }

        //查询所有以及根据姓名查询
        public IActionResult Index(string name)
        {
            var list = _service.GetIDservice(name);
            return View(list);
        }

        //添加数据
        [HttpGet]
        public IActionResult Add()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Add(Student student)
        {
            if (ModelState.IsValid)
            {
                Student student1 = new Student();
                student1.Name = student.Name;
                student1.Age = student.Age;
                student1.Sex = student.Sex;
                student1.Address = student.Address;
                _service.AddService(student1);
                return RedirectToAction(nameof(Index));
            }
            return View();
        }

        //根据ID修改数据
        [HttpGet]
        public IActionResult Edit(int id)
        {
            var stu = _service.GetValue(id);
            return View(stu);
        }
        [HttpPost]
        public IActionResult Edit(Student student)
        {
            if (ModelState.IsValid)
            {
                _service.UpServeice(student);
                return RedirectToAction(nameof(Index));
            }
            return View();
        }

        //根据id删除数据
        public IActionResult Del(int id)
        {

            _service.DelServive(id);
            return RedirectToAction(nameof(Index));
        }
    }
视图
查询视图
@{
    ViewData["Title"] = "查询所有";
}
@model List<Student>
<div>
    <p><a asp-action="Add">添加学生信息</a></p>
    <form asp-controller="Student" asp-action="Index" method="get">
        <label>输入姓名:</label><input name="name" /><input  type="submit"/>
    </form>
    <table class="table table-bordered">
        <tr>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>住址</td>
            <td>操作</td>
        </tr>
        @foreach (var item in Model)
        {
            <tr>
                <td>@item.Name</td>
                <td>@item.Age</td>
                @if (item.Sex == true)
                {
                    <td>男</td>
                }
                else
                {
                    <td>女</td>
                }
                <td>@item.Address</td>
                <td>
                    <a asp-route-id="@item.Id" asp-action="Edit">编辑</a> | 
                    <a asp-route-id="@item.Id" asp-action="Del" onclick="return confirm('确定删除吗?')">删除</a>
                </td>
            </tr>
        }
    </table>
</div>
修改视图
@{
}
@model Student
<h2>修改数据</h2>
<form asp-controller="Student" asp-action="Edit" method="post">
    <p><label>姓名</label> <input asp-for="Name" /></p>
    <p><label>年龄</label> <input asp-for="Age" /></p>
    <p><label>性别</label> <input asp-for="Sex" type="checkbox" /></p>
    <p><label>住址</label> <input asp-for="Address" /></p>
    <p><input type="submit" value="确定修改" /></p>
</form>
新增视图
@{
}
@model Student
<h2>添加数据</h2>
<form asp-controller="Student" asp-action="Add" method="post">
    <p><label>姓名</label> <input asp-for="Name" /></p>
    <p><label>年龄</label> <input asp-for="Age" /></p>
    <p><label>性别</label> <input asp-for="Sex" type="checkbox"/></p>
    <p><label>住址</label> <input asp-for="Address" /></p>
    <p><input type="submit" value="确定添加" /></p>
</form>

效果图

标签:Core,ASP,return,int,db,改查,id,list,public
From: https://blog.csdn.net/weixin_51164103/article/details/139522920

相关文章

  • EFCore和EF6的使用和区别
    1、Sqlserver是微软的亲儿子,很少会报错,EF报错问题最多出现在Mysql。以下使用mysql为例子C#一般很形象,带Core的都是.NetCore平台的。所以在.NetFramework平台我们使用EF6,也就是EntityFramework6在.NetCore平台使用EFCore2、直接上代码(.Net6)internalclassProgram{......
  • Entity Framwork Core (一)
    ORM:ObjectRelationalMapping。让开发者用对象操作的形式操作关系数据库。从面向数据库集中到面向对象。NugetMicrosoft.EntityFrameworkCore//针对于sqlserverMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.Design//在vs中需要装Microsoft.......
  • Spring - AOP - @EnableAspectAutoJAutoProxy 与其属性exposeProxy,proxyTargetClass
    这三个属性是Spring框架中与AOP(面向切面编程)相关的配置。 EnableAspectJAutoProxy:这是一个注解,用于开启Spring对AspectJ的自动代理功能。  exposeProxy:这个属性用于配置是否需要将代理对象暴露给AOP创建的Subject,这样就可以在代理对象内部通过AopContext.currentProxy......
  • C# .NET 6 使用WorkFlow Core 创建工作审批流
    1,背景工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更......
  • C# .NET 6 使用WorkFlow Core 创建工作审批流
    1,背景工作流思想在上世纪60年代就有人提出过;70年代就有人开始尝试,但是由于当时许多的限制,工作流一直没有成功的被实现;80年代才出现第一批成功的工作流系统;90年代工作流技术走向了第一个发展高峰期;90年代后至今工作流出现了很多版本,但是主旨还是不变的,为了使我们的工作变得更......
  • .NET Core中灵活使用反射
    前言前段时间有朋友问道一个这样的问题,.NETCore中如何通过Attribute的元数据信息来调用标记的对应方法。我第一时间想到的就是通过C#反射获取带有CustomAttribute标记的类,然后通过依赖注入(DI)的方式获取对应服务的方法并通过反射动态执行类的方法,从而实现更灵活的编程方式。......
  • node.js + mysql实现基本的增删改查功能(保姆级教程---1)
    node.js+mysql实现基本的增删改查(保姆级教程---1)工具:sqlyog可视化工具,vscode,nodejs环境(我的node.js版本号是18.16.0)前提条件:电脑上要有node.js、npm、mysql服务器、可视化工具(navicat或sqlyog都行)步骤:新建文件夹node-mysql-cruid(根目录),终端打开该目录初始化项目:npm......
  • node.js + mysql实现基本的增删改查功能(保姆级教程---2优化版)
    node.js+mysql实现基本的增删改查(保姆级教程---2优化版)上一个实现对增删改查功能都写在同一个文件里,代码过于冗余,我认为可以优化,分开写在不同文件里面,使得更加直观。废话不多说,直接进入主题:对之前的代码进行抽离:db.js文件(用于数据库的连接,并导出连接供其他模块使用):......
  • 从零开始的.NET项目(一)配置EFCore
    目标框架:.net6.0操作系统:macos编译器:Rider内容:配置EFCore,使用CodeFrist创建mssql数据库,并存入种子数据数据库准备如果使用的是vs编译器的话,其实就不用准备数据库了,直接用vs自带的数据库,嘎嘎好使......
  • ASP.NET Core应用程序9:使用内置的标签助手
      ASP.NETCore提供了一组内置的标签助手,可以应用最常用的元素转换。使用了内置的标签助手,就不必像前一章一样自己创建自定义标签助手。  本章描述了基本的内置标签助手,并解释了它们是如何用于转换锚、链接、脚本和图像元素的。还解释了如何缓存内容部分以及如何根据应用程......