MVC初体验-EF系列(CRUD)(20)

数据库数据:Northwind中的Region表

Region类是根据Region表自动生成的

后台代码:

using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using System.Web.Mvc;
using T1_EF.Models;

namespace T1_EF.Controllers
{
    public class RegionController : Controller
    {
        DbContext db = new NorthwindEntities();
        // GET: Region
        public ActionResult Index()
        {
            var list = db.Set<Region>();
            ViewData.Model = list;
            return View();
        }
        [HttpPost]
        public ActionResult Add()//新增
        {
            int regionID = int.Parse(HttpContext.Request["regionID"]);
            string regionDes =  HttpContext.Request["regionDes"];
            Region regData = new Region { RegionID = regionID, RegionDescription = regionDes };
            db.Set<Region>().Add(regData);
            db.SaveChanges();//如果内存中的数据发生了改变,并且希望将变化映射到数据库中,需要执行保存。
            return Redirect(Url.Action("Index","Region"));
        }
        [HttpPost]
        public ActionResult Edit()//编辑
        {
            int regionID = int.Parse(HttpContext.Request["regionID"]);
            string regionDes = HttpContext.Request["regionDes"];
            Region region = new Region { RegionID = regionID, RegionDescription = regionDes };
            db.Set<Region>().AddOrUpdate(region);//该方法需要引用Data.Entity中的Migrations
            db.SaveChanges();
            return Redirect("/Region/Index");
        }

        public ActionResult Delete()//删除
        {
            //根据HttpContext上下文对象查询出前台表单提交的数据
            int regionID = int.Parse(HttpContext.Request["regionID"]);
            //查询出要删除的对象
            var data = db.Set<Region>().FirstOrDefault(r => r.RegionID == regionID);
            db.Set<Region>().Remove(data);
            db.SaveChanges();
            return Redirect(Url.Action("Index", "Region"));
        }
    }
}

前台代码:

@model IEnumerable<T1_EF.Models.Region>
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <table border="1">
            @foreach (var item in Model)
            {
                <tr>
                    <td>@item.RegionID</td>
                    <td>@item.RegionDescription</td>
                </tr>
            }
        </table>
        <hr />
        <form action="@Url.Action("Add","Region")" method="post">
            <span>区域ID:</span>
            <input type="text" name="regionID" value="" />
            <span>区域:</span>
            <input type="text" name="regionDes" value="" />
            <input type="submit" name="" value="新增" />
        </form>
        <hr />
        @*这里的表单不能用put提交方法*@
        <form action[email protected]("Edit","Region") method="post">
            <span>区域ID:</span>
            <input type="text" name="regionID" placeholder="填写要修改数据的ID" />
            <span>区域:</span>
            <input type="text" name="regionDes" value="" />
            <input type="submit" name="change" value="修改" />
        </form>
        <hr />
        <form action[email protected]("Delete","Region") method="post">
            <span>区域ID:</span>
            <input type="text" name="regionID" placeholder="填写要删除数据的ID" />
            <input type="submit" name="change" value="删除" />
        </form>
    </div>
</body>
</html>

显示效果:

End

原文地址:https://www.cnblogs.com/LeeSki/p/12264638.html

时间: 2024-10-12 21:42:54

MVC初体验-EF系列(CRUD)(20)的相关文章

MVC初体验-EF系列(总结)(23)

注意,增加,修改,删除的状态最终还是使用的状态版的,本质都是把数据附加到上下文,然后进行修改: 导航属性根据1对多或者多对1的关系,在生成类中的属性会分别生成一个集合属性或者一个标量属性: 是否禁用延时加载取决于数据量是否很大,数据变化是否十分频繁 End 原文地址:https://www.cnblogs.com/LeeSki/p/12267235.html

MVC初体验-EF查询(Lambda的用法)(18)

使用数据库:NorthWind示例数据库 (链接:https://www.cnblogs.com/liverpool/p/4718042.html) 后台代码: namespace T1_EF.Controllers { public class CustomersController : Controller { // GET: Customers public ActionResult Index() { //NorthwindEntities northwind = new Northwi

ASP.NET MVC学习---(五)MVC初体验

经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 T_Users 将就着用着吧,哈哈 现在要求对T_Users表进行增删改查 开搞~ 回到之前新建的mvc项目 在Controllers文件夹下新建一个名为Home的空控制器 当浏览器请求Home下面的Index方法的时候返回什么? 当然是主页面啦 这里我们的主页面就是显示T_Users数据列表 代

MVC初体验-Razor和HtmlHelper(4)

1 动态改变路由规则,HtmlHelper的 如果使用了路由器中的默认路由,那么在浏览器的URL不会显式显示Controller的名字和Action的名字 输出 布表单 总结:本人感觉除了路由引用的可以使用HtmlHelper方法 其余的像布表单.一些其他的不建议使用这种混编代码. 确实增加了维护难度,并且前后端耦合了. 视图的数据从哪来?从行为来 怎么从行为向视图传数据,通过ViewData中的键值对 ViewBag是ViewData的简写,使用起来完全一样,实际就是一种动态字典类型 使用时在

MVC初体验-过滤器(10)

主要有4中过滤器: 1.Authorization  身份验证过滤器 理解身份验证过滤器和无侵入式开发: 假如我这里有学生和教室两个对象,学生进入教室需要进行身份验证,如果在A学生上增加验证,那么在代码层面就构成了侵入式开发,需要修改学生A的代码,如果多了一个学生C,那么又需要继续增加验证代码,不合适: 如果在教室对象上增加身份验证代码,如果新增了教室D,那么身份验证又需要重写,同时也构成了侵入式开发: 所以最好的方案是不修改学生和教室,在它们中间加入一层中间验证,哪个教室需要身份验证,就给它加

SSH初体验系列--Hibetnate--2--crud操作

Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基础,提供了众多的数据库操作方法,如save(),update(),delete()...etc,用于完成对象的增加,修改,删除等方法. 后面代码中使用到的HinernateUtil类:是用于构建SessionFactory(Hibernate提供的获取session的工厂类)的一个封装类,在前面的文

AngularJS路由系列(3)-- UI-Router初体验

本系列探寻AngularJS的路由机制,在WebStorm下开发. AngularJS路由系列包括: 1.AngularJS路由系列(1)--基本路由配置2.AngularJS路由系列(2)--刷新.查看路由,路由事件和URL格式,获取路由参数,路由的Resolve3.AngularJS路由系列(3)-- UI-Router初体验4.AngularJS路由系列(4)-- UI-Router的$state服务.路由事件.获取路由参数5.AngularJS路由系列(5)-- UI-Router的路由

1Python全栈之路系列之Django初体验

Python全栈之路系列之Django初体验 Django不得不说在Python中是一个非常强大的全栈框架,而且入门也比较简单,只要你学完了基本的Django知识,接着再做一两个项目,不大不小就成,然后你再去学其它的框架你会发现,在那些小而美的框架中,你学起来将非常的快,因为你在学习Django的时候就已经学习并且体验过了Web开发流程,所以会有这么一个现象出现,有些新手朋友在学习Flask.Tornado等小而美的框架时,很多概念不是很理解,比如ORM.路由等,但你学Django就不会出现这种

Docker深入浅出系列 | 容器初体验

Docker深入浅出系列 | 容器初体验 教程目标 Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会根据本人理解去做阐述,具体官方概念可以查阅官方文档,本章目标如下: 了解什么是Docker 了解Docker解决了什么 了解什么是镜像和容器 了解容器与虚拟机的区别 了解Vagrant与Docker的区别 了解Docker引擎和架构 了解Docker的镜像分层 了解VirturalBox和Do