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. JAVA消息 AMQP

    AMQP(Advanced Message Queuing Protocol)高级的消息队列

  2. 两个cookie的合并

    这里为什么会想到这个问题呢? 1.我们在对一个商品下订单之前需要2个步骤,1---登录,2---加入购物车 2.那么我们到底是用哪一个cookie呢?实际测试的时候, a.发现只用了登录cookie, ...

  3. C# 字符串与字节数组相互转换

    https://www.cnblogs.com/xiaoqingshe/p/5882601.html

  4. <<网络是怎样连接的>>笔记第2章用电信号传输Tcp/ip数据

    创建套接字: 协议栈的内部结构.套接字的实体,以及创建套接字的操作过程 连接服务器: “连接”具体是进行怎样的操作,在这个过程中协议栈到底是如何工作的, 以及客户端和服务器是如何进行交互的. 收发数据 ...

  5. Rails 5 Test Prescriptions 第10章 Testing for Security

    Web 安全是一个可怕的主题.所有的你的程序都依靠密码学,代码超出了你的控制. 尽管如此,你还是可以控制部分网页安全 --所有的logins和access checks和injection error ...

  6. MAPE 平均绝对百分误差

    from fbprophet.diagnostics import performance_metrics df_p = performance_metrics(df_cv) df_p.head() ...

  7. jquery属性值选择器

    $("[attribute|='value']") 选择指定属性值等于给定字符串或改字符串为前缀(该字符串后跟一个连字符“-”)的元素. attribute: 一个属性名 valu ...

  8. Java中的HashMap的工作原理是什么?

    问答题23 /120 Java中的HashMap的工作原理是什么? 参考答案 Java中的HashMap是以键值对(key-value)的形式存储元素的.HashMap需要一个hash函数,它使用ha ...

  9. MySQl中隔离级别和悲观锁乐观锁

    1.MySql的事物支持 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务.行级锁.并发 Ber ...

  10. ssh的时候提示No user exists for uid 501

    原来是oh my zash升级导致的.关闭iterm2然后重新打开iterm2就可以了