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. 关联规则&Apriori算法

    2017-12-02 14:27:18 一.术语 Items:项,简记I Transaction:所有项的一个非空子集,简记T Dataset:Transaction的一个集合,简记D 关联规则: 一 ...

  2. 微信小程序封装storage(含错误处理)

    这次给你们安利的是微信小程序封装storage,先说下微信官方的 wx.getStorage({ key:"", success: function (res) { }, fail ...

  3. OAF TABLE中第一列添加事件不生效

    我遇到一个比较诡异的现象 在TABLE中,我在TABLE的第一列添加了一个MessageCheckBox,并为其设置全局刷新的FireAction事件selection, 但是点击勾选框按钮之后,事件 ...

  4. tflearn tensorflow LSTM predict sin function

    from __future__ import division, print_function, absolute_import import tflearn import numpy as np i ...

  5. vue.js 源代码学习笔记 ----- codegenEvents.js

    /* @flow */ const fnExpRE = /^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/ const simplePathRE = / ...

  6. [爬虫] 学Scrapy,顺便把它的官方教程给爬下来

    想学爬虫主要是因为算法和数据是密切相关的,有数据之后可以玩更多有意思的事情,数据量大可以挖掘挖掘到更多的信息. 之前只会通过python中的request库来下载网页内容,再用BeautifulSou ...

  7. 【css样式生成 & 图片合并压缩工具】Sprite,你值得拥有

    好久好久没有更新博客了,越来越懒...话说懒也有懒的好处,懒的时候你可能会想着用些神马方法来帮你偷懒.没错,下面就给大家介绍个博主前不久开发的[css样式生成 & 图片合并压缩工具]Spirt ...

  8. Linux系列:Linux中如何安装.rpm、.tar、.tar.gz和tar.bz2文件

    转载自:https://blog.csdn.net/lanxuezaipiao/article/details/21896579 我以下面三个包为例:(三个包都在/etc/opt下) A. examp ...

  9. WinForm获取当前路径汇总

    Winform获取应用程序的当前路径的方法集合汇总,值得收藏备用 具体如下, //获取当前进程的完整路径,包含文件名(进程名). string str = this.GetType().Assembl ...

  10. 零基础学Cocos2d-X 3.0 - 04

    忙完两个项目后.最终有时间继续学习Cocos2d-X 了. 常听人说.Cocos2d-X 有四个类是最经常使用的,包含: Director 类----> 导演 Scene 类 -----> ...