model层的属性为:

 public partial class UserInfo
{
public int Uid { get; set; }
public string UName { get; set; }
}

数据上下文类:生成数据

using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure; public partial class MyContext : DbContext
{
public MyContext()
: base("name=MyContext")
{
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
} public DbSet<UserInfo> UserInfo { get; set; } }

controller层:  crud是在集合的基础上完成的(实则对集合的crud)

 public class UserInfoCrudController : Controller
{
DbContext dbContext = new MyContext(); //由父类指向子类 实例化生成数据库 Set<>方法产生的是一个集合
// GET: /UserInfoCrud/ public ActionResult Index()
{
var list = dbContext.Set<UserInfo>(); return View(list);
} public ActionResult Add()
{
return View();
}
[HttpPost]
public ActionResult Add(UserInfo userInfo)
{
dbContext.Set<UserInfo>().Add(userInfo);
int result = dbContext.SaveChanges();//如果内存中的数据发生了变化,并且希望将这个变化映射到数据库,需要执行这个方法
if (result > )
{
return Redirect(@Url.Action("Index", "UserInfoCrud"));
}
else
{
return Redirect(@Url.Action("Add"));
}
} public ActionResult Edit(int id)
{
ViewData.Model = dbContext.Set<UserInfo>()
.Where(u => u.Uid == id).FirstOrDefault(); return View();
}
[HttpPost]
public ActionResult Edit(UserInfo userInfo)
{
dbContext.Set<UserInfo>().AddOrUpdate(userInfo);
int result = dbContext.SaveChanges();
if (result > )
{
return Redirect(Url.Action("Index"));
}
else
{
return Redirect(Url.Action("Edit", new RouteValueDictionary(new
{
id = userInfo.Uid
})));
} } public ActionResult Remove(int id)
{
var userInfo = dbContext.Set<UserInfo>()
.Where(u => u.Uid == id)
.FirstOrDefault();
dbContext.Set<UserInfo>().Remove(userInfo);
dbContext.SaveChanges(); return Redirect(Url.Action("Index"));
}
}

views层:

(1)数据展示部分

@using model所在 的命名空间
@model IQueryable<t2_EFTest.Models.UserInfo>
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@Html.ActionLink("添加","Add","UserInfoCrud")
<hr/>
<table border="">
<tr>
<th>编号</th>
<th>姓名</th>
<th>修改</th>
<th>删除</th>
</tr>
@foreach (UserInfo userInfo in Model)
{
<tr>
<td>@userInfo.Uid</td>
<td>@userInfo.UName</td>
<td>
@Html.ActionLink("修改","Edit","UserInfoCrud",
new RouteValueDictionary(new {id=@userInfo.Uid}),null)
</td>
<td>
@Html.ActionLink("删除",
"Remove",
"UserInfoCrud",
new RouteValueDictionary(new
{
id=@userInfo.Uid
}),null)
</td>
</tr>
}
</table>
</div>
</body>
</html>

(2)数据添加部分

@model t2_EFTest.Models.UserInfo
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Add</title>
</head>
<body>
<div>
@using (Html.BeginForm("Add", "UserInfoCrud", FormMethod.Post))
{
<span>姓名:</span>
@Html.TextBoxFor(u=>u.UName)
<br/>
<input type="submit" value="添加"/>
}
</div>
</body>
</html>

(3)数据修改部分

@model t2_EFTest.Models.UserInfo
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Edit</title>
</head>
<body>
<div>
@using (Html.BeginForm("Edit", "UserInfoCrud", FormMethod.Post))
{
<span>编号:</span>
@Model.Uid
@Html.HiddenFor(u=>u.Uid)
<br/>
<span>姓名:</span>
@Html.TextBoxFor(u=>u.UName)
<br/>
<input type="submit" value="修改"/>
}
</div>
</body>
</html>

新的方法(Set<T>)实现mvc的crud的更多相关文章

  1. PHP面向对象_重载新的方法(parent::)

    在学习PHP 这种语言中你会发现, PHP中的方法是不能重载的, 所谓的方法重载就是定义相同的方法名,通过“参数的个数“不同或“参数的类型“不 同,来访问我们的相同方法名的不同方法.但是因为PHP是弱 ...

  2. IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法IIS上部署MVC网站,打开后500错误

    IIS上部署MVC网站,打开后ExtensionlessUrlHandler-Integrated-4.0解决方法 IIS上部署MVC网站,打开后500错误:处理程序“ExtensionlessUrl ...

  3. 【PHP面向对象(OOP)编程入门教程】12.重载新的方法(parent::)

    在学习PHP 这种语言中你会发现, PHP中的方法是不能重载的, 所谓的方法重载就是定义相同的方法名,通过“参数的个数“不同或“参数的类型“不 同,来访问我们的相同方法名的不同方法.但是因为PHP是弱 ...

  4. js页面跳转 和 js打开新窗口 方法

    js页面跳转 和 js打开新窗口 方法 第一种: 第二种: 第三种: 第四种: 第五种: 1.在原来的窗体中直接跳转用 window.location.href="你所要跳转的页面" ...

  5. 新的方法 (New Approach)¶

    第一章:简介 - ANSI Common Lisp 中文版 新的方法 (New Approach)¶ 本书的目标之一是不仅是教授 Lisp 语言,而是教授一种新的编程方法,这种方法因为有了 Lisp ...

  6. Spring aop:decare-parent 为类增加新的方法

    Spring aop:decare-parent 为类增加新的方法: 使用XML配置的方式: XML: <?xml version="1.0" encoding=" ...

  7. javascript插入before(),after()新DOM方法

    随着web的技术突飞猛进的发展.HTML5 ES6等新技术的发展,与此同时DOM等标准也在悄悄的进步,各大浏览器也在悄悄的发展适配新的属性和方法,今天我们来看看Javascript新的DOM的方法 二 ...

  8. Java 8新特性:新语法方法引用和Lambda表达式及全新的Stream API

    新语法 方法引用Method references Lambda语法 Lambda语法在AndroidStudio中报错 Stream API 我正参加2016CSDN博客之星的比赛 希望您能投下宝贵 ...

  9. JAVA8新特性——方法引用

    JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ 在Lamda新特性的支持下,JAVA8中可以使用lamda表达式来创建匿名方法.然而,有时候我们仅仅是需要调用一个已存在的方法(如 ...

  10. win2012 挂载硬盘即增加新硬盘方法

    这篇文章主要介绍了win2012 挂载硬盘即增加新硬盘方法,需要的朋友可以参考下 点击左下角的服务器管理图标 点击右上角的“工具”,再选择“计算机管理” 再点击“磁盘管理” 在磁盘1的按钮处单击右键, ...

随机推荐

  1. Luogu P4062 [CTSC2018]混合果汁 (主席树)

    二分$d$, 转为判断判断是否能取到$Lj$升, 再可持久化一下就好了 #include <iostream> #include <algorithm> #include &l ...

  2. bzoj1078

    题解: 一道思路题(话说在那个时候有多少人知道左偏树) 考虑最后一个加进来的点 必然满足 (1)从它到根一直是左链上去的 (2)没有左右子树 在这些点中寻找一个最浅的 然后删除 代码: #includ ...

  3. Rancher快速入门

    https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/quick-start-guide/

  4. java Object对象的clone方法

    参考copy链接:http://blog.csdn.net/bigconvience/article/details/25025561 在看原型模式,发现要用到clone这个方法,以前和朋友聊过,没怎 ...

  5. Thunder7.2.13.3884 JayXon

    更新日志: 更新迅雷7. 更新VipService 2.7 更新SQLite 更新zlib 不再精简msvcr71.dll.msvcp71.dll 不再精简64位BHO 破解了本地离线重命名30个字符 ...

  6. 免费一年MAP2014+6个月免费MIS2014

    活动页面:http://promos.mcafee.com/en-us/Affiliates/400/Lp/np2815_mavp.aspx?rfhs=1&LPName=np2815_mavp ...

  7. Android listview自定义分割线宽度

    代码很简单防止以后忘记 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:an ...

  8. Map集合统计字母次数

    Map集合练习:"asfefxAAcf34vrfdfse2-2asd--wdd"获取该字符串中,每一个字母出现的次数要求打印的结果是:a(2)c(1)...;思路:对结果分析发现, ...

  9. UVA-11478 Halum【二分】【差分约束】

    LINK1 LINK2 题目大意 给你一个n个点,m条边的有向图 有一种操作把所有到达这个点的边全部减小d,把所有从从这个点出发的边加上d 问最后是否可以让所有边的边权最小值最大 如果可以无限大,输出 ...

  10. springboot项目配置拦截器,进行登陆等拦截

    新建拦截类: public class LoginInterceptor implements HandlerInterceptor{ private static Log logger = LogF ...