1)Controller向View传递数据
ViewData["message"] = "Hello";//使用ViewData传递数据
ViewBag.Time = DateTime.Now;//ViewBag传递数据
TempData["mes"] = "text";//使用TempData传递数据
//使用静态字段定义变量
public static string str;//全局的
str = "123";
//使用静态集合定义变量
public static List<string> list = new List<string>();//全局的,必须new出来一个对象或者new List<string>();写在方法里面,否则会出现“未将对象引用设置到对象的实例”的错误
list.RemoveRange(0,list.Count);//添加前先清除集合所有元素
list.AddRange(new string[] { "aaa", "bbb", "ccc" });
使用Model传递数据:
使用Model传递数据的时候,通常在创建View的时候我们会选择创建强类型View
View访问Controller数据:
<h1>@ViewData["message"]</h1>
<h2>@ViewBag.Time</h2>
<h3>@TempData["mes"]</h3>
@using MVCStart.Controllers //调用静态字段时,需要引用该方法所在的命名空间
<h4>@LoginController.str</h4> //用类名.调用

总结:
1.ViewData与TempData方式是弱类型的方式传递数据,而使用Model传递数据是强类型的方式。
2.ViewData与TempData是完全不同的数据类型,ViewData数据类型是ViewDataDictionary类的实例化对象,而TempData的数据类型是TempDataDictionary类的实例化对象。
3.TempData实际上保存在Session中,控制器每次执行请求时都会从Session中获取TempData数据并删除该Session。TempData数据只能在控制器中传递一次,其中的每个元素也只能被访问一次,访问之后会被自动删除。
4.ViewData只能在一个Action方法中进行设置,在相关的视图页面读取,只对当前视图有效。理论上,TempData应该可以在一个Action中设置,多个页面读取。但是,实际上TempData中的元素被访问一次以后就会被删除。
5.使用静态集合定义全局变量时,new出来的对象不要写在方法外面,应写在方法里面,否则每次在View获取到的集合数据会累加一次;

2)View向Controller传递数据
通过表单form传递数据,此为post请求获取
定义标签name属性:
<input type="text" name="txtname" />
1.通过Request.Form[""]获取View数据
string username = Request.Form["txtname"];
2.通过public ActionResult Login(FormCollection form)获取View数据
string username = form["username"];
3.get请求获取
string username = Request.QueryString["username"];
4.通过Action参数获取
public ActionResult Login(string username, string password)

通过EF访问例子:

获取数据

public class HomeController : Controller
{
syEntities db = new syEntities();
public ActionResult Index()
{
//List<UserInfo> list = db.UserInfo.ToList();//获取数据库所有成员
//List<UserInfo> list = db.UserInfo.Where(s => s.Gender == true).ToList();//获取数据库所有成员并且Gender为true的成员,Lambda方式
List<UserInfo> list = (from s in db.UserInfo where s.Gender == true select s).ToList();//Linq方式获取
return View(list);//返回List集合
}
}
@{
Layout = null;
}
@using MVCText.Models;
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
<style type="text/css">
#tbList {
border:1px solid #0094ff;
width:400px;
margin:20px auto;
border-collapse:collapse;
}
#tbList td, #tbList th {
border:1px solid #0094ff;
padding:2px;
}
</style>
</head>
<body>
<table id="tbList">
<tr>
<th>Id</th>
<th>姓名</th>
<th>密码</th>
<th>姓别</th>
<th>操作</th>
</tr>
<!--视图包含一个 Model属性,可以通过控制器Action方法里的 View(modeldata)赋值 -->
@foreach (UserInfo item in Model as List<UserInfo>)
{
<tr>
<td>@item.Id</td>
<td>@item.Name</td>
<td>@item.Pwd</td>
<td>@item.Gender</td>
<td>
<a href="/Home/Del/@item.Id">删</a>
<a href="/Home/Edit/@item.Id">改</a>
</td>
</tr>
}
</table>
</body>
</html>

删除与修改数据:

/// <summary>
/// 直接删除
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult Del01(int id)
{
UserInfo user = new UserInfo() { Id = id };
//第一种方法
//db.UserInfo.Attach(user);
//db.UserInfo.Remove(user);
//db.SaveChanges();
//第二种方法
syEntities entity = new syEntities();
entity.Entry(user).State = EntityState.Deleted;
entity.SaveChanges();
return Redirect("/Home/Index");
}
/// <summary>
/// 删除后弹出对话框,返回js代码
/// </summary>
/// <param name="id"></param>
public void Del(int id)
{
UserInfo user = new UserInfo() { Id = id };
//第一种方法
//db.UserInfo.Attach(user);
//db.UserInfo.Remove(user);
//db.SaveChanges();
//第二种方法
syEntities entity = new syEntities();
entity.Entry(user).State = EntityState.Deleted;
entity.SaveChanges();
//return Redirect("/Home/Index");
Response.Write("<script>alert('删除成功~~!');window.location='/Home/Index';</script>");
//return JavaScript("<script>alert('删除成功~~!');window.location='/Home/Index';</script>");
}
[HttpGet]
/// <summary>
/// 修改 - 显示要修改的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public ActionResult Edit(int id)
{
//查询用户指定的ID值
UserInfo user = (from s in db.UserInfo where s.Id == id select s).FirstOrDefault();
//查询所有用户
//List<UserInfo> listPwd = (from c in db.UserInfo where c.Gender == true select c).ToList();
List<UserInfo> listPwd = (from c in db.UserInfo select c).ToList();
ViewBag.classPwd = listPwd;//动态赋值 //3.1.3.2 查询班级数据,并转成 下拉框选项 集合
List<SelectListItem> listClass = db.UserInfo.ToList()
.Select(c => new SelectListItem() { Text = c.Age, Value = c.Id.ToString(),
Selected = (user.Id == c.Id) }).ToList();
ViewBag.classList = listClass;
return View(user);//将获取到的ID值返回
} [HttpPost]
public ActionResult Edit(UserInfo model)
{
syEntities entity = new syEntities();
entity.Entry(model).State = EntityState.Unchanged;
//DbEntityEntry entry = db.Entry<UserInfo>(model);
//entry.State = EntityState.Unchanged;
//entry.Property("Name").IsModified = true;
//entry.Property("Age").IsModified = true;
db.SaveChanges();
return Redirect("/Home/Index");
//syEntities entity = db.Entry<UserInfo>(model);
}
@model MVCText.Models.UserInfo
@{
Layout = null;
}
@using MVCText.Models;
<!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Edit</title>
</head>
<body>
<form action="/Home/Edit" method="post">
<input type="hidden" name="Id" value="@Model.Id" />
<table>
<tr>
<td>姓名:</td>
<td><input type="text" name="Name" value="@Model.Name" /></td>
</tr>
<tr>
<td>年龄</td>
<td>
@Html.DropDownList("CID",ViewBag.classList as IEnumerable<SelectListItem>)
@*<select name="CID">
@foreach (UserInfo s in ViewBag.classPwd as List<UserInfo>)
{
if(s.Id == Model.Id)
{
<option selected value="@s.Id">@s.Age</option>
}
else
{
<option value="@s.Id">@s.Age</option>
}
}
</select>*@
</td>
</tr>
</table>
<input type="submit" value="确定" />
</form>
</body>
</html>

Controller与View之间的数据传递的更多相关文章

  1. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  2. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

  3. Asp.net MVC中 Controller 与 View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据 1.Controller向View中传递数据 (1)使用ViewData["user"] (2)使用 ...

  4. MVC中Controller与View之间的数据传递

    一.Controller向View传递数据 Controller向View传递数据有3种形式: 通过ViewData传递 在Controller里面的Action方法中定义ViewData,并且赋值, ...

  5. MVC中Controller与View中间的数据传递的常用方法

    这几天正在学习MVC,顺便就将自己每天的学习心得记录下来与大家分享一下吧! 在MVC中,Controller与View之间传递数据是很频繁的事情,所以在这里就总结一下我自己在学习中使用的几种常用的方法 ...

  6. angular view之间的数据传递

    之前写过一篇backbone view之间的传递,由于现在在用angular搞开发,现在也来总结一下.在angular 传递数据通俗的讲叫做 广播 ,在一些文章中,也叫做事件的发布与订阅,在angul ...

  7. ASP.NET MVC 之控制器与视图之间的数据传递

    今天,我们来谈谈控制器与视图之间的数据传递. 数据传递,指的是视图与控制器之间的交互,包括两个方向上的数据交互,一个是把控制器的数据传到视图中,在视图中如何显示数据,一个是把视图数据传递到控制器中, ...

  8. Activity之间的数据传递

    最常用的Activity之间的数据传递. btnStartAty1.setOnClickListener(new View.OnClickListener() { @Override public v ...

  9. iOS开发中视图控制器ViewControllers之间的数据传递

    iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的.本文先从手写UI来讨论,在下一篇文章中讨论在storybo ...

随机推荐

  1. HDU 5497 Inversion

    Time Limit: 3000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u Description You have ...

  2. PHP 数据库驱动、连接数据不同方式学习笔记

    相关学习资料 http://www.php.net/manual/zh/refs.database.php http://www.php.net/manual/zh/internals2.pdo.ph ...

  3. 多线程练习(java)

    public class TestThread { public static void main(String[] args) { RandomNumber r=new RandomNumber() ...

  4. centos7中systemctl命令使用方法和心得体会

    使用linux的同学对service和chkconfig两个命令都不陌生,其重要性不言而喻,那么怎么会突然冒出个systemctl命令呢?其实,为了简化操作,systemctl命令将service和c ...

  5. ssh框架整合完整版

    1.导入jar包 可以在src下添加一个log4j.properties文件来记录日志 2.加入实体类+映射文件 映射:从类入手class+属性 a.映射的头文件在:hibernate3.jar--& ...

  6. CSS创建一个遮罩层

    .layer{ width: 100%; position: absolute; left:; right:; top:; bottom:; -moz-opacity:; filter: alpha( ...

  7. derby数据库操作比较难理解的错误及解决方法大全

    一.插入(INSERT时报错) 1.错误:java.sql.SQLIntegrityConstraintViolationException: 列“test”无法接受空值. 可能原因:建表时test列 ...

  8. Ubuntu 下忘记mysql 密码

    在Ubuntu下忘记密码.可按以下步骤重设:1.停止mysql服务: #/etc/init.d/mysql stop;2,安全模式启动mysql,略过密码验证: # sudo mysqld_safe ...

  9. 让我们一起学习《Node.js入门》一书吧!

    Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...

  10. PHP常量PHP_SAPI与函数php_sapi_name()简介,PHP运行环境检测

    php_sapi_name() 是用来检测PHP运行环境的函数. 该函数返回一个描述PHP与WEB服务器接口的小写字符串. 例如:aolserver, apache,apache2filter, ap ...