这几天基本上都是交接的一些杂事,没有什么工作任务,就有空来回顾一下MVC。虽然工作中也用到了MVC,但已经被微软的架构师设计的找不到MVC的影子了,可能有别的考虑吧,至今还没研究出来。所以,今天就来回顾一下“原生”的MVC的基本操作,免得回来了以后跟你们聊不到一块~

这篇博客主要是MVC的数据传递中的ViewBag和ViewData。

一、从定义来看

ViewBag

 //
// 摘要:
// 获取动态视图数据字典。
//
// 返回结果:
// 动态视图数据字典。
[Dynamic]
public dynamic ViewBag { get; }

ViewBag返回的是dynamic类型,返回动态视图数据字典。而ViewData的返回值类型是ViewDataDictionary,ViewDataDictionary表示一个容器,该容器用于在控制器和视图之间传递数据。

 //
// 摘要:
// 获取或设置视图数据的字典。
//
// 返回结果:
// 视图数据的字典。
public ViewDataDictionary ViewData { get; set; }

二、使用上的区别

(1)ViewBag

Controller中

 public class HomeController : Controller
{
//
// GET: /Home/ public ActionResult Index()
{
ViewBag.MyParam = "ViewBag传递的参数:"+Request["param"]; return View();
} }

在视图中显示

@{
ViewBag.Title = "Index";
} <h2>@ViewBag.MyParam</h2>

在地址栏之后输入手动加入参数,如:http://localhost:50663/home/index/?param=helloWorld,我们可以看到呈现的页面为:

(2)ViewData

ViewData的使用与ViewBag类似,只是语法稍有不同。

public class HomeController : Controller
{
//
// GET: /Home/ public ActionResult Index()
{
ViewData["str1"] = "ViewData传递的参数:"+Request["str1"]; return View();
} }

视图中

@{
ViewBag.Title = "Index";
}
<h2>@ViewData["str1"]</h2>

效果图如下所示:

ViewData是一个字典集合,通过key值读取对应的value;ViewBag是动态类型,作用和ViewData一样,都是用来存储信息,有一些不同的是ViewData是object类型,ViewBag是动态类型。

最新文章

  1. 记一次Suse下的Django环境配置——第一弹
  2. 关于Map集合
  3. 【腾讯云的1001种玩法】腾讯云搭建DiscuzX论坛
  4. 交换芯片收发包的 DMA 实现原理
  5. Error : L6218E: Undefined symbol downloadAddress (referred from nand.o).
  6. require()与 require_once()、 include与include_once()
  7. Android——横屏和竖屏的切换,以及明文密码的显示
  8. Lua的require和module小结
  9. Java之对象池
  10. 如何才能学到Qt的精髓——信号槽之间的无关性,提供了绝佳的对象间通讯方式,QT的GUI全是自己的一套,并且完全开源,提供了一个绝好机会窥视gui具体实现
  11. iOS viewController 和 view 的创建消失生命周期总结
  12. javascript 正则匹配手机号码
  13. 【转】QT QString, wchar_t *, TCHAR, CString和其他字符或字符串类型的转化
  14. 【android】优秀的UI资源站点集合
  15. 第一百二十五节,JavaScript,XML
  16. C#中泛型默认关键字(default)详解
  17. 用网站把图标做成iconFont文件引用
  18. 关于HTML元素点击的时候,背景颜色秒进,缓缓退出的方法
  19. 用BlazeMeter录制JMeter(三十五)测试脚本(转载)
  20. python网络编程之一

热门文章

  1. _default_ VirtualHost overlap on port 80, the first has precedence
  2. Spring Bean依赖但注入(autowired或resource)时NullPointerException(xml和annotation混用的场景下)
  3. css中有些属性的前面会加上“*”或“_”,请问分别表示什么意思?
  4. python解析ini文件
  5. 时间戳与QDateTime相互转换
  6. BZOJ1901: Zju2112 Dynamic Rankings(整体二分 树状数组)
  7. 【ACM之行】◇第一站◇ 2018HDU多校赛总结
  8. harbor 配置 Keepalived 实现HA
  9. VS2013使用自带的数据库 Microsoft SQL Server 2012 Express LocalDB
  10. ARM S3C2440 时钟初始化流程