Asp.net Mvc在VSCore中如何将增删改查的增改添加数据传输到页面(需配合上一篇Mvc的增删改查一起)

Linq集成查询(关联Lambda)

  1. First FirstOrDefault 找到第一个符合条件的元素
  • First(x =>x.Id == id) 返回第一个Id等于id的元素,如果都没有符合的,报错
  • FirstOrDefault(x =>x.Id == id) 返回第一个Id等于id的元素,如果都没有符合的,返回Null
  1. Single SingleOrDefault
  • Single() 返回第一个Id等于id的元素,如果都没有符合的,报错
  • SingleOrDefault() 返回第一个Id等于id的元素,如果都没有符合的,返回Null
  1. Where
  • Where(x=>x.Score>=80 && x.Sex==1) 查找所有成绩大于等于80,并且性别为1的所有元素 4.Select
  • Select(x=>new{x.Id,x.Score}) 以新的{x.Id,x.Score}对象形式,返回新的集合

如何将增删改查的增改添加数据传输到页面

1. 在新增页面Increase.cshtml中修改为

复制代码
@model Blog.Models.Blogs;
<h2>新增</h2>
<form asp-Controller="Blogs" asp-action="Increase" method="post">
  <label>标题:<input asp-for="Title"/></label> <br/>
  <label>内容:<input asp-for="Content"/></label> <br/>
  <label>作者:<input asp-for="Author"/></label> <br/>
   <button type="submit">保存</button>
</form>

2. 在BlogsController.cs中添加

复制代码
    [HttpPost]
  public Blogs Increase(Blogs input)
    {
        return input;
    }

-就可以添加新增到页面。但需要验证数据库是否成功,成功跳转到列表页吗,验证不通过,仍显示新增页面,并显示

  • 所以单单这样,验证是不通过的,并且显示

    {
    "id": 0,
    "title": "你好",
    "content": "星期三",
    "author": "哈哈"
    }

完整版 (需要配合上一篇,mvc的增删改查一起)

  • BlogsController.cs

    using Microsoft.AspNetCore.Mvc;
    using Blog.Models;
    namespace Blog.Controllers;

    public class BlogsController : Controller
    {
    public IActionResult Index()
    {
    return View(Db.Blogs);
    }
    ///


    /// 创建-展示新增页面
    ///

    /// <returns></returns>
    public IActionResult Increase()
    {
    return View();
    }
    ///
    /// 创建-保存表单结果的Action
    ///

    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    public IActionResult Increase(Blogs input)
    {
    // return input;

    复制代码
          // 1.验证表单数据是否可以传入
          // 2.拿到传入的数据后,一般做验证,数据验证,如必填,手机号,长度,名称是否唯一
          // 3.如果符合验证规则,则保存到数据库,否则提示验证不通过
          // 4.如果保存数据库成功,则跳转列表页,如果验证不成功,那就仍然显示新增页面
          //  var maxId=Db.Blogs.First();
          //  var maxId=Db.Blogs.FirstOrDefault();
          //  var maxId=Db.Blogs.Single(x=>x.Id>0);
          //  var maxId=Db.Blogs.SingleOrDefault(x=>x.Id>0);
          //  double.Blogs.Add(inout)
    
    
            // 先通过select 拿到集合中的所有id,放在一个新的集合中返回,然后对这个返回的新的集合应用Max方法,找到其中最大值 
          // var blogs = Db.Blogs.Where(x => x.Title.Equals(input.Title));
          // if (blogs.Count() > 0)
          // {
          //     return View("create");
          // }
      
         var maxId=Db.Blogs.Select(x =>x.Id).Max();
         input.Id=maxId +1;
         Db.Blogs.Add(input);
         return RedirectToAction("Index");
      }
      // 新
      // 获得Id
      public IActionResult Redact(int id)
      {
          // 根据id找到对应的blogs,有可能为空
          var blog = Db.Blogs.FirstOrDefault(x =>x.Id == id);
          return View(blog);
      }
      // 新
        [HttpPost]
      public IActionResult Redact(Blogs input)
      {
          // 根据id找到对应的blogs,有可能为空
          var blog = Db.Blogs.FirstOrDefault(x => x.Id == input.Id);
          if (blog != null)
          {
              blog.Title = input.Title;
              blog.Content = input.Content;
              blog.Author = input.Author;
    
          }
          return RedirectToAction("Index");
      }
      public IActionResult Delete()
      {
          return View();
      }

    }

  • Index.cshtml页面

    <link rel="stylesheet" href="~/css/base.css"> @model List<Blog.Models.Blogs> 增加 @foreach(var item in @Model) {
    Id 标题 内容 作者 操作
    @item.Id @item.Title @item.Content @item.Author 编辑 删除
    复制代码
          </td>
      </tr>
          
      }
  • Increase.cshtml页面

    @model Blog.Models.Blogs;

    新增

    <form asp-Controller="Blogs" asp-action="Increase" method="post"> <label>标题:</label>
    <label>内容:</label>
    <label>作者:</label>
    <button type="submit">保存</button> </form>

    @*注释部分

    <form action=""> </form>
    标题
    内容
    作者
    *@
  • Redact.cshtml页面

    @model Blog.Models.Blogs;

    修改

    <form asp-Controller="Blogs" asp-action="Redact" method="post">
    复制代码
    <label>Id:<input asp-for="Id"/></label> <br/>
    <label>标题:<input asp-for="Title"/></label> <br/>
    <label>内容:<input asp-for="Content"/></label> <br/>
    <label>作者:<input asp-for="Author"/></label> <br/>
     <button type="submit">保存</button>
    </form> @* <form action=""> </form>
    标题
    内容
    作者
    *@
相关推荐
脑电信号要分类10 小时前
将多张图片拼接成一个pdf文件输出
pdf·c#·apache
njsgcs10 小时前
c# solidworks 折弯系数检查
开发语言·c#
格林威12 小时前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
唐青枫12 小时前
C#.NET SignalR + Redis Backplane 深入解析:多节点部署与跨实例消息同步
c#·.net
毕设源码-赖学姐13 小时前
【开题答辩全过程】以 基于.NET MVC的婚庆服务系统设计为例,包含答辩的问题和答案
mvc·.net
FL16238631291 天前
[C#][winform]segment-anything分割万物部署onnx模型一键抠图演示
开发语言·c#
love530love1 天前
OpenClaw 手机直连配置全流程
人工智能·windows·python·智能手机·c#·agent·openclaw
bcbobo21cn1 天前
C# byte类型和byte数组的使用
开发语言·c#·字节数组·byte类型
月巴月巴白勺合鸟月半1 天前
一次PDF文件的处理(一)
pdf·c#
大鹏说大话1 天前
Java 锁膨胀机制深度解析:从偏向锁到重量级锁的进化之路
开发语言·c#