MVC:Controller向View传值方式总结
Controller向View传值方式总结
总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是:
首先我们需要明确的是我们从controller向view传值的时候,这些方式分别处于什么样的地位:
我们一般会向页面传递一个主要的类型的数据,一般是情况下是一个List<Model>,如果只有这个,很好办,一个model对象就解决了,但是往往除此之外还会有一些额外的零散的数据需要传递,比如分页的pageIndex,或者pageCount等等,这样的数据用原有的model就无能为力了,这时候,我们就可以用ViewBag、ViewData、TempData来传递这些额外的数据。
ViewBag、ViewData、TempData之间的差别:
ViewData与ViewBag之间非常相似,两者使用的场景基本一致,但是ViewData的类型是很明确的,使用的时候经常需要强制类型转换,而ViewBag的类型是动态的,不确定的,直接就可以使用,他们的传值范围是:controller向view传值,view自己和自己传值。而TempData存在的目的就是为了防止redirect时候数据的丢失,所以它的传值范围是当前controller和跳转后的controller之间。
下面来详细的讲述他们的具体用法:
ViewBag
我们可以认为 ViewBag=ViewData+Dynamic wrapper around the ViewData ,接下来你就可以体会到这个公式的含义了。
1、conroller向view传值

2、view向view传值:

3、利用ViewBag传递一个对象:

ViewData
1、ViewData的基本用法

2、ViewData 转换成 ViewBag:

3、ViewBag 转换成 ViewData:

TempData
TempData用于在Redirect的时候保存数据,ViewData、ViewBag在跳转后就会变成null,但是TempData不会,下面是TempData的用法示例:
            };
    TempData["ModelName"] = model;
    return RedirectToAction("About");
}
<pre><pre lang="cs">public ActionResult About()
{
    var model= TempData["ModelName"];
    return View(model);
}
普通页面传递model:
//Action代码
public ActionResult Index()
{
  Product p = new Product();
  p.Name = "Toy";
  return View(p);
}
 
在View中调用的代码: 
Product : <%: ((Product)Model).Name %>
向强类型试图传递model
1、WebForm Engine的试图的实现:
//Aciton的代码
public ActionResult Index()
{
  Product p = new Product();
  p.Name = "Toy";
  return View(p);
}
View中的代码
声明类型
<%@ Page Inherits="System.Web.Mvc.ViewPage<Product>" %>
直接用Model调用该对象
<h2> Product Name: <%: Model.Name %> </h2>
 
2、Razor Engine的实现:
在Razor中声明类型的方式: @model Mvc3App.Models.Product 在Razor中调用对象的方式: <h2> Product: @Model.Name </h2>
ViewModel
我们可以用一个ViewModel来实现model和其他三个额外传值的对象的职能,具体具体的实现方式,请看另外一篇文章:
http://www.cnblogs.com/key1309/p/3489191.html
本文章总结自:http://bubblogging.wordpress.com/2011/12/31/mvc-data-controller-view/
两篇文章
MVC:Controller向View传值方式总结的更多相关文章
- ASP.NET MVC  Controller向View传值方式总结
		Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ... 
- ASP.NET MVC Controller向View传值的几种方式
		上几篇博文提到MVC和WebForm的区别,主要是MVC的Controller和View将传统的WebForm的窗体和后台代码做了解耦,这篇博文简单介绍一下在MVC中Controller向View是如 ... 
- Controller向View传值方式总结
		http://www.cnblogs.com/guohu/p/4377974.html 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag Vi ... 
- MVC Controller向View传值(ViewData与ViewBag)
		近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ... 
- MVC Controller 与 View 传值
		Controller 到 View 1 强类型 控制器 // GET: /Test/ public ActionResult Index() { DateTime date = DateTime.No ... 
- 总结Controller向View传值的方式(转)
		总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通View页面传一个Model对象 向强类型页面传传 ... 
- 【项目经验】之——Controller向View传值
		我们的ITOO进行了一大部分了,整体上来说还是比较顺利的.昨天进行了一次验收,大体上来说,我们新生这块还是可以的.不仅仅进行了学术上的交流,还进行了需求上的更新.也正是由于这一次,我有了解到了一个新的 ... 
- Spring MVC Controller中解析GET方式的中文参数会乱码的问题(tomcat如何解码)
		Spring MVC Controller中解析GET方式的中文参数会乱码的问题 问题描述 在工作上使用突然出现从get获取中文参数乱码(新装机器,tomcat重新下载和配置),查了半天终于找到解决办 ... 
- MVC中页面的传值方式总结
		MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下: 一:ViewData 获取或设置一个字典,其中包含在控制器和视图之间传递的数据.使用ViewD ... 
随机推荐
- js常用几种类方法实现
			js定义类方法的常用几种定义 1 定义方法,方法中包含实现 function createCORSRequest() { var xhr = new XMLHttpRequest(); xhr.onl ... 
- CSS技巧!像table一样布局div
			摘自:http://www.cnblogs.com/hnyei/archive/2011/09/19/2181442.html 许多网页设计师都喜欢,将两个或者多个容器等高的并排放置,并在里面展示每个 ... 
- 多线程下载工具-Axel
			1.安装: apt-get install axel 2.用法: axel 参数 文件下载地址 3.常用参数: -n 指定线程数 -o 指定文件存储位置(如不指定,默认存在当前位置(pwd)) -q ... 
- 循环结构中break、continue、return和exit的区别
			1. break break语句的使用场合主要是switch语句和循环结构.在循环结构中使用break语句,如果执行了break语句,那么就退出循环,接着执行循环结构下面的第一条语句.如果在多重嵌套循 ... 
- Introduction to Guid ( globally unique identifier )
			什么是 GUID? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装. 在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ... 
- Startup 和 Middleware(中间件)
			Startup 和 Middleware(中间件) ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Con ... 
- 挺有意思的HBase日志+Splunk
			如题,转载自: http://hi.baidu.com/harry_lime/item/10cf2c174853c7ea39cb3042 如何模拟拔盘操作 Linux has a nifty way ... 
- 英文:known good board ( KGB) / 中文:测试用标准板,黄金板
			作为标准部件提供的.完全符合设计电气性能的在制板,可以作为与其它印制板比较的标准. 
- 解惑:NFC手机怎样轻松读取银行卡信息?
			自支付宝钱包8.0推出了NFC新功能,仅仅要将支持NFC功能的手机靠近公交卡.银行卡等带有芯片的IC卡上,可迅速读取卡内剩余金额.卡的信息,还能够给卡进行充值,很贴心有用. 可是非常多网友表示担忧,要 ... 
- [Swust OJ 188]--异面空间(读懂题意很重要)
			题目链接:http://acm.swust.edu.cn/problem/188/ Time limit(ms): 1000 Memory limit(kb): 65535 江鸟来到了一个很奇怪的 ... 
