View & ViewData
ViewData 似乎没啥好说的,一个向 View 传送数据的字典。
--------------------------------------------------------------------------------
public class ViewDataDictionary : IDictionary<string, object>
{
private readonly Dictionary<string, object> _innerDictionary =
new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
}
------------------------------------------------------------------
嗯,内部存储字典的 Key 不区分大小写。
ViewDataDictionary 内部唯一有些特殊的就是 Eval 方法,它让视图开发人员用很简便的方式显示数据,省了类型转换等麻烦。
-------------------------------------------------------------------------------------
public ActionResult Index()
{
ViewData["user"] = new User { Name = "Tom", Age = };
return View();
}
Index.aspx
<%= (ViewData["user"] as User).Name %>
<br />
<%= ViewData.Eval("user.Name") %>
------------------------------------------------------------------
对比之下,Eval() 就简单明多了。当你习惯使用匿名类型时,就知道 Eval() 的好处了。
------------------------------------------------------------------------------------
public ActionResult Index()
{
ViewData["user"] = new { Name = "Tom", Age = };
return View();
}
Index.aspx
<%= ViewData.Eval("user.Name") %>
----------------------------------------------------
Eval() 还能处理更深度的访问。
--------------------------------------------------------------------------
public ActionResult Index()
{
ViewData["user"] = new
{
Name = "Tom",
Age = ,
Data = new { X = , Y = }
};
return View();
}
Index.aspx
<%= ViewData.Eval("user.Data.y") %>
-----------------------------------------------------------
ViewData Key 还允许出现 "." 符号,试试看。
----------------------------------------------------------------------------
public ActionResult Index()
{
ViewData["user.xxx"] = new
{
Name = "Tom",
Age = ,
Data = new { X = , Y = }
};
return View();
}
Index.aspx
<%= ViewData.Eval("user.xxx.Data.y") %>
----------------------------------------------------------
Eval() 会按照如下方式尝试读取 ViewData 数据。
--------------------------------------------------------------------------------
ViewData["user.xxx.Data.y"]
ViewData["fuser.xxx.Data"]["y"]
ViewData["fuser.xxx"]["Data.y]
ViewData["user.xxx"]["Data"]["y"]
ViewData["user"]["xxx.Data.y"]
ViewData["user"]["xxx.Data"]["y"]
ViewData["user"]["xxx"]["Data.y"]
ViewData["user"]["xxx"]["Data"]["y"]
----------------------------------------------------------------
这个看着有点别扭,还是少写这样的代码为好。只所以这么写伪码,是因为 Eval() 支持从 Dictionary 中读取数据。
--------------------------------------------------------------------------------
public ActionResult Index()
{
ViewData["user"] = new
{
Name = "Tom",
Age = ,
Data = new Dictionary<string, int> { { "x", }, { "y", } }
};
return View();
}
Index.aspx
<%= ViewData.Eval("user.Data.y") %>
----------------------------------------------------------
View & ViewData的更多相关文章
- ASP.NET Core 中文文档 第二章 指南(4.3)添加 View
		原文:Adding a view 作者:Rick Anderson 翻译:魏美娟(初见) 校对:赵亮(悲梦).高嵩(Jack).娄宇(Lyrics).许登洋(Seay).姚阿勇(Dr.Yao) 本节将 ... 
- 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下:
		Asp.net MVC中的ViewData与ViewBag ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP. ... 
- 创建ASP.NET Core MVC应用程序(1)-添加Controller和View
		创建ASP.NET Core MVC应用程序(1)-添加Controller和View 参考文档:Getting started with ASP.NET Core MVC and Visual St ... 
- 白话学习MVC(十)View的呈现二
		本节将接着<白话学习MVC(九)View的呈现一>来继续对ViewResult的详细执行过程进行分析! 9.ViewResult ViewResult将视图页的内容响应给客户端! 由于Vi ... 
- 白话学习MVC(九)View的呈现一
		一.概述 本节来看一下ASP.NET MVC[View的呈现]的内容,View的呈现是在Action执行之后进行,Action的执行生成一个ActionResult,[View的呈现]的功能就是:通过 ... 
- 《ASP.NET MVC4 WEB编程》学习笔记------.net mvc实现原理ActionResult/View
		ActionResult ActionResult是Action的返回结果.ActionResult 有多个派生类,每个子类功能均不同,并不是所有的子类都需要返回视图View,有些直接返回流,有些返回 ... 
- ASP.NET MVC 中的ViewData与ViewBag
		在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从 ... 
- Part 3  ViewData and ViewBag in mvc
		ViewBag and ViewData is a mechanism(机制) to pass data from controller to view. We use '@' symbol(符号) ... 
- Asp.net MVC中的ViewData与ViewBag
		Asp.net MVC中的ViewData与ViewBag 在Asp.net MVC 3 web应用程序中,我们会用到ViewData与ViewBag,对比一下: ViewData ViewBag 它 ... 
随机推荐
- 导出文本pdf文件
			出口手续往往是一些数据需求,学习文本导出到今天pdf文件.主要用于QPrinter,QPainter TextEditToPdf::TextEditToPdf(QWidget *parent, Qt: ... 
- CCFadeOut ,CCFadeIn 不能使用的原因
			CCFadeOut *action = CCFadeOut::create(0.5f); image->runAction(action); 截取部分代码.以上是我写游戏时候遇到的问题代码, ... 
- IE浏览器兼容性问题解决方法
			如何用一行代码来解决CSS各种IE各种兼容性问题 一行代码来解决CSS在,IE6,IE7,IE8,IE9,IE10 各种兼容性问题. 在站点前端写代码的过程中,非常多时间IE各个版本号的兼容问题非常难 ... 
- Unity项目优化--开发项目的小经验
			原文地址:http://blog.csdn.net/liang_704959721/article/details/8548619 我们主要使用 3dsmax2010 进行制作,输出 FBX的类型导入 ... 
- FPGA图案--数字表示(代码+波形)
			在数字逻辑系统,仅仅存在高低.所以用它只代表一个整数数字.并且有3代表性的种类.这是:原码表示(符号加绝对值值).反码表示(加-minus标志)而补码(符号加补).这三个在FPGA中都有着广泛的应用. ... 
- c# Ftp下载程序源代码解析
			using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ... 
- HTML5分析实战WebSockets基本介绍
			HTML5 WebSockets规范定义了API,同意web使用页面WebSockets与远程主机协议的双向交流. 介绍WebSocket接口,并限定了全双工通信信道,通过套接字网络.HTML5 We ... 
- adb这点小事——远程adb调试
			欢迎转载.转载请注明:http://blog.csdn.net/zhgxhuaa 1. 前言 1.1. 写在前面的话 在之前的一篇文章<360电视助手实现研究>中介绍了在局域网内直接 ... 
- B/S 类项目改善
			B/S 类项目改善的一些建议 要分享的议题 性能提升:在访问量逐渐增大的同时,如何增大单台服务器的 PV2 上限,增加 TPS3 ? RESTful:相较于传统的 SOAP1,RESTful 风格 ... 
- android_Activity生命周期功能
			说明:初步activity 生命周期7功能. 样本:于MainActivity我加了button,搬家button.跳到OtherActivity.控制台输出的观察. 让我们来看看这些功能: 他们的流 ... 
