<1>

控制器

</pre><pre name="code" class="csharp">using MvcTest.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MvcTest.Controllers
{
public class TestController : Controller
{ salesEntities1 db = new salesEntities1(); //ADO实体模型类 //-----以下的Model接收的是一个泛型对象-------//
public ActionResult Index()
{
var query = from r in db.T_User // 查询id为2的一条数据 ,尽管仅仅是查询一条数据,可是这个query是一个泛型对象。 where r.Id==2
select r; ViewData.Model = query;
return View();
} //-----以下的Model接收的是一个普通对象-------//
public ActionResult Index2()
{
T_User u = db.T_User.Single(m => m.Id == 2); // 在T_User表(类)中查询id等于2的一条数据(有且仅有一条) u是一个对象 return View(u); } //-----上面两个都是强类型传值。以下的是弱类型传值的使用------// public ActionResult Index3()
{
T_User u = db.T_User.Single(m => m.Id == 2);
ViewData["userinfo"] = u; return View();
} //=========================以上是演示样例强类型与弱类型的传值方式=============================// //-----------------增-----------------//
[HttpGet]
public ActionResult Add()
{
return View();
} [HttpPost]
public ActionResult Add(T_User u)
{
db.T_User.Add(u); //加入一条数据
//db.Entry(u).State = System.Data.EntityState.Added; //假设以下的不行,就改成这条试试。(2015-4-26測试的)
//db.Entry(u).State = System.Data.Entity.EntityState.Added; //用这就也能够实现加入数据
db.SaveChanges(); return RedirectToAction("List");//加入数据后跳转到List这种方法
} //-----------------删-----------------//
public ActionResult Delete(int id)
{
T_User u = db.T_User.Single(r => r.Id == id);
ViewData.Model = u;
return View();
}
[HttpPost]
public ActionResult Delete(T_User u)
{
//EntityState:是描写叙述实体的状态,它是一个枚举类型;它有5个值
//Deleted:实体将由上下文跟踪并存在于数据库中。可是已被标记为在下次调用 SaveChanges 时从数据库中删除。
//db.Entry(u).State = System.Data.EntityState.Deleted; //假设以下的不行,就改成这条试试。 (2015-4-26測试的)
db.Entry(u).State = System.Data.Entity.EntityState.Deleted; //删除此条数据
db.SaveChanges(); return RedirectToAction("List");// 删除数据后跳转到List这种方法
} //---------------改(更新数据)-----------//
[HttpGet]
public ActionResult Edit(int id)
{
T_User u = db.T_User.Single(r => r.Id == id); //编辑数据之前,将要编辑的数据查询出来展示在页面上,以便改动
ViewData.Model = u; return View();
}
[HttpPost]
public ActionResult Edit(T_User u)
{ //EntityState是一个枚举类型。它是描写叙述实体的状态。 //Modified:实体将由上下文跟踪并存在于数据库中,已改动当中的一些或全部属性值
//db.Entry(u).State = System.Data.EntityState.Modified; //假设以下的不行,就改成这条试试。(2015-4-26測试的)
db.Entry(u).State = System.Data.Entity.EntityState.Modified; //更新此条数据 //除了上面这样的跟新数据外。还能够採用以下这样的方式来更新数据 //T_User s = db.T_User.Single(r => r.Id == u.Id);
//UpdateModel<T_User>(s); //注意假设用要UpdateModel来更新实体类对象数据,那么这个实体类对象一定要来自于db 即:s是从db中查询出来的 db.SaveChanges(); return RedirectToAction("List"); //编辑完后跳转到List这种方法
} //---------------展示数据-----------//
public ActionResult List()
{
var q = db.T_User; //查出T_User这个表(类)的数据。让它展示在页面上
ViewData.Model = q;
return View();
} }
}

Index视图   --------控制器中传递的是一个泛型对象

@model IEnumerable<MvcTest.Models.T_User>

@{
ViewBag.Title = "Index";
} <h2>Index</h2>
@foreach (var i in Model)
{
<div>@i.Id</div><div>@i.UserName</div><div>@i.Age</div>
}

Index2视图   --------控制器中传递的是一个普通对象

@model MvcTest.Models.T_User

@{
ViewBag.Title = "Index2";
Layout = "~/Views/Shared/_Layout.cshtml";
} @section UserInfo{ 这个表是一个用户信息表! 我使用了母版页哦 } <td>@Model.Id</td><td>@Model.UserName</td><td>@Model.Age</td>

Index3视图   ---------没有使用强类型传递数据

@{
Layout = null;
} @using MvcTest.Models @*这里是引入T_User类的命名空间*@
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index3</title>
</head>
<body>
<div>
@{T_User u = ViewData["UserInfo"] as T_User;}
<table border="1">
<tr><td>@u.Id</td><td>@u.UserName</td><td>@u.Age</td><td>@Html.ActionLink("编辑", "Edit", new { id=u.Id})</td></tr>
</table> </div>
</body>
</html>

Index2视图使用的模板页

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title> @Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken() //布局页面还有节(Section)的概念。也就是说,假设某个视图模板中定义了一个节(事实上就是在某一块地方占个位置),
//那么能够把它单独呈现出来为了防止因缺少节而出现异常,能够给RenderSection()提供第2个參数:
//第一个參数:谁便定义,相当于给这个节取个名字 。
//第二个參数:指定子页面这个节是否是必需的,假设在这里设为true;可是在子页面没有给这个名称的节的话。编译是通只是的。 //如今想在子页面写一段话,来介绍以下这个table的内容信息。
<p style="color:red">@RenderSection("UserInfo", true)</p> <table border="1">
<tr>@*这里面就是呈现子页的主体内容的*@ @RenderBody()</tr>
</table> }
</body>
</html>

Add视图 (加入数据)

@model MvcTest.Models.T_User
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>加入数据</title>
</head><body>
@using (Html.BeginForm())
{ <table>
<tr><th>username</th><td>@Html.TextBoxFor(m => m.UserName) </td></tr>
<tr><th>性别</th><td>@Html.TextBoxFor(m => m.Gender)</td></tr>
<tr><th>年龄</th><td>@Html.TextBoxFor(m => m.Age) </td></tr>
<tr><th><input type="submit" value="提交" /></th><td></td></tr>
</table>
}
</body>
</html>

Delete 视图 (删除数据)

@model MvcTest.Models.T_User

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>您确定要删除此条数据吗?</title>
</head>
<body>
@using (Html.BeginForm("Delete","Test",FormMethod.Post)) {
<table>
<tr><th>id</th><td>@Html.TextBoxFor(m=>m.Id)</td></tr>
<tr><th>username</th><td>@Html.TextBoxFor(m => m.UserName)</td></tr>
<tr><th>性别</th><td>@Html.TextBoxFor(m => m.Gender)</td></tr>
<tr><th>年龄</th><td>@Html.TextBoxFor(m => m.Age)</td></tr>
<tr><th><input type="submit" value="删除"/></th></tr>
</table>
}
</body>
</html>

Edit 视图 (编辑数据。更新数据)

@model MvcTest.Models.T_User

@{
Layout = null;
}
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>编辑</title>
</head>
<body>
<form action="/Test/Edit" method="post">
<div>
<table>
<!--(假如我控制器中的action方法接收的是一个User类对象)当把HTML页面的表单数据提交到控制器的action方法中,Mvc中有一个叫ModelBinder的机制,会将依照你提交表单的name属性值与类的属性进入对照。假设类的某个属性与提交过来的表单name属性值一致,那么就将这个表单的value值赋值给类相应的属性。比如:从html页面传过来的表单的name属性值为"UserName" 即name="UserName", 假如控制器的action方法的參数是一个User类对象,又假如正好User类有个属性名也叫"UserName" 那么就将name="UserName"的那个表单的value值赋给User类的UserName属性 -->
<!---经过上面的分析 得出:即便我们提交数据不是一个类的对象。可是在控制器中我们仍然能够用类的对象来得到我们提交的数据,前提是类的属性字段要与我们提交的表单name属性值一致(属性值能够忽略大写和小写)。-->
@*<tr><th>编号</th><td><input type="text" name="Id" /></td></tr>
<tr><th>username</th><td><input type="text" name="UserName" /></td></tr>
<tr><th>性别</th><td><input type="text" name="Gender"/></td></tr>
<tr><th>年龄</th><td><input type="text" name="Age" /></td></tr>
<tr><td><input type="submit" value="提交" /></td></tr>*@ <!--也能够写成一下形式--> <tr><th>编号</th><td>@Html.TextBoxFor(r=>r.Id)</td></tr>
<tr><th>username</th><td>@Html.TextBoxFor(r=>r.UserName)</td></tr>
<tr><th>性别</th><td>@Html.TextBoxFor(r=>r.Gender)</td></tr>
<tr><th>年龄</th><td>@Html.TextBoxFor(r=>r.Age)</td></tr>
<tr><td><input type="submit" value="提交" /></td></tr>
</table>
</div>
</form>
</body>
</html>

List 视图 (展示数据)

@model IEnumerable<MvcTest.Models.T_User>

@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>List</title>
</head>
<body>
<p>
@Html.ActionLink("加入数据", "Add")
</p>
<table border="1">
<tr><th>username</th><th>年龄</th><th>性别</th><th>操作</th></tr>
@foreach (var item in Model) {
<tr>
<td>@Html.DisplayFor(modelItem => item.UserName)</td>
<td>@Html.DisplayFor(modelItem => item.Age)</td>
<td>@Html.DisplayFor(modelItem => item.Gender)</td>
<td>
@Html.ActionLink("编辑", "Edit", new { id=item.Id }) |
@Html.ActionLink("具体", "Details", new { id=item.Id }) |
@Html.ActionLink("删除", "Delete", new { id=item.Id })
</td>
</tr>
}
</table>
</body>
</html>

MVC 强类型传值Model。和弱类型传值ViewData[&quot;&quot;]。及用EF进行增删查改(母版页的使用)的更多相关文章

  1. Python 到底是强类型语言,还是弱类型语言?

    0.前言 我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧. 我们主要的分歧就在于:Py ...

  2. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  3. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  4. backbonejs mvc框架的增删查改实例

    一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...

  5. 在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  6. 在MVC中使用泛型仓储模式和依赖注入实现增删查改

    标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...

  7. MVC——再探MVC——增删查改

    MVC 是我大学学的比较弱的,甚至不懂原理.(那时候都在准备蓝桥杯 软件杯比赛.) 在重新学 肯定要学MVC 现在知道了为什么叫MVC了  MVC是怎么工作的 MVC 是一个设计模式 控制器(Cont ...

  8. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  9. knockout+MVC+webapi+sqlserver完成增删查改

    快过年了,公司的事情较少,想着开始学习点新东西.这段时间一个项目用到了mvc和webapi,然后一直对knockout比较感兴趣,就想着用这个框架做一个小实例.数据库采用的是sqlserver.话不多 ...

随机推荐

  1. Flask实战第41天:发送短信验证码

    本项目使用的短信运营商是阿里云.使用淘宝账号登录阿里云控制台.在“产品与服务”中搜索“短信”进入短信服务 获取AccessKey 输入子账户用户名 权限选择管理短信服务 签名管理:申请签名 模板管理: ...

  2. Knockout.js(一):简介

    Knockout是一款很优秀的JavaScript库,通过应用MVVM模式使JavaScript前端UI简单化.任何时候你的局部UI内容需要自动更新,KO都可以很简单的帮你实现,并且非常易于维护. K ...

  3. 【BZOJ 1049】 1049: [HAOI2006]数字序列 (LIS+动态规划)

    1049: [HAOI2006]数字序列 Description 现在我们有一个长度为n的整数序列A.但是它太不好看了,于是我们希望把它变成一个单调严格上升的序列.但是不希望改变过多的数,也不希望改变 ...

  4. [BZOJ1913][APIO2010]信号覆盖(计算几何+计数)

    1913: [Apio2010]signaling 信号覆盖 Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1658  Solved: 672[Subm ...

  5. 【二分】Jessica's Reading Problem

    [POJ3320]Jessica's Reading Problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1309 ...

  6. BZOJ 1260 [CQOI2007]涂色paint(区间DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1260 [题目大意] 假设你有一条长度为n的木版,初始时没有涂过任何颜色 每次你可以把一 ...

  7. [TCO2013]DirectionBoard

    题意:给一个网格,每个格子有一个方向表示在这个格子上要往哪个方向走,你可以改变某些格子的方向,问最少多少次操作使得从任意格子出发都能回到这个格子 woc这都不会我还是回家种田去吧... 题目的要求是改 ...

  8. 【点分治】【FFT】CDOJ1562 Amaz1ng Prime

    统计路径的时候,显然用母函数的思想,可以用FFT来方便统计. 注意!要减去路径两个端点相同的情况!然后再除以二!这样防止重复. 还有就是说啊,点分治的正确姿势还是应该用所有子树的答案减去各个子树分别的 ...

  9. 【最大团转最大点独立集(匈牙利算法+时间戳优化)】BZOJ2744-[HEOI2012]朋友圈

    [题目大意] 有两个国家A和B.存在以下朋友关系: 1.A国:每个人都有一个友善值,当两个A国人的友善值a.b,如果a xor b mod 2=1,那么这两个人都是朋友,否则不是: 2.B国:每个人都 ...

  10. 【最大流FF模板】HDU1532&POJ1273

    参照<挑战程序设计竞赛> #include<iostream> #include<cstdio> #include<cstdlib> #include& ...