ViewData与ViewBag的区别
类别:编程学习 浏览量:7931
时间:2014-7-9 ViewData与ViewBag的区别
ViewData与ViewBag的区别视图数据可以通过ViewBag属性访问,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类。
一、ViewBag的定义
public dynamic ViewBag {
get {
if (_dynamicViewData == null) {
_dynamicViewData = new DynamicViewDataDictionary(() => ViewData);
}
return _dynamicViewData;
}
}
二、ViewData的定义
public ViewDataDictionary ViewData {
get {
if (_viewData == null) {
SetViewData(new ViewDataDictionary());
}
return _viewData;
}
set {
SetViewData(value);
}
}
三、ViewData与ViewBag的区别
1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value, ViewData["myName"]
2、ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag 中的值可以互相访问,因为ViewBag的实现中包含了ViewData
四、ViewData与ViewBag的实例
1、ViewData
(1)、在Controller中使用ViewData
public ActionResult UsingViewData()
{
ViewData["Title"] = " Using ViewData";
ViewData["ProjectName"] = "My Test Project";
ViewData["ProjectDescription"] = "This is Test Project to demo Viewdata and viewbag details";
ViewData["StartDate"] = new DateTime(2011, 1, 1);
ViewData["TotalPrice"] = 1000;
ViewData["TotalDays"] = 100;
Dictionary<string, string> stackholder = new Dictionary<string, string>();
stackholder.Add("Client","Mr. Client");
stackholder.Add("Manager","Mr. Joy");
stackholder.Add("Team Leader","Mr.Toy");
stackholder.Add("Sr. developer", "Mr.dojoy");
stackholder.Add("developer", "Mr. nodoy");
ViewData["stackholder"] = stackholder;
List<string> modules = new List<string>();
modules.Add("Admin module");
modules.Add("ShoppingCart module");
modules.Add("CMS module");
ViewData["modules"] = modules;
return View();
}
(2)、对应UsingViewData View的cshtml
<h1>@ViewData["Title"]</h1>
<li>
<li>
<h2>Project Name : @ViewData["ProjectName"]</h2>
</li>
<li>
ProjectDescription :
<p>"@ViewData["ProjectDescription"]".</p>
</li>
<li>
Stack Holder :
<br />
<ul id="stakholder">
@foreach ( var stakerholder in ViewData["stackholder"] as Dictionary<string, string> )
{
<li>
@stakerholder.Key : @stakerholder.Value
</li>
}
</ul>
</li>
<li>
Project Details:<br />
<li>
module List :
<ul id="modulelist">
@foreach ( var module in ViewData["modules"] as List<string> )
{
<li>
@module
</li>
}
</ul>
</li>
Project StartDate : @ViewData["StartDate"] <br />
Project TotalPrice: @ViewData["TotalPrice"] <br />
Project TotaDays : @ViewData["TotalDays"]
</li>
</li>
2、ViewBag
(1)、在Controller中使用ViewBag
public ActionResult UsingViewBag()
{
ViewBag.Title = " Using ViewBag";
ViewBag.ProjectName = "My Test Project";
ViewBag.ProjectDescription = "This is Test Project to demo Viewdata and viewbag details";
ViewBag.StartDate = new DateTime(2011, 1, 1);
ViewBag.TotalPrice = 1000;
ViewBag.TotalDays = 100;
Dictionary<string, string> stackholder = new Dictionary<string, string>();
stackholder.Add("Client", "Mr. Client");
stackholder.Add("Manager", "Mr. Joy");
stackholder.Add("Team Leader", "Mr.Toy");
stackholder.Add("Sr. developer", "Mr.dojoy");
stackholder.Add("developer", "Mr. nodoy");
ViewBag.stackholder = stackholder;
List<string> modules = new List<string>();
modules.Add("Admin module");
modules.Add("ShoppingCart module");
modules.Add("CMS module");
ViewBag.modules = modules;
return View();
}
(2)、对应View UsingViewBag 的cshtml的ViewBag
<h1>@ViewBag.Title</h1>
<li>
<li>
<h2>Project Name : @ViewBag.ProjectName</h2>
</li>
<li>
ProjectDescription :
<p>"@ViewBag.ProjectDescription.</p>
</li>
<li>
Stack Holder :
<br />
<ul id="stakholder">
@foreach ( var stakerholder in ViewBag.stackholder )
{
<li>
@stakerholder.Key : @stakerholder.Value
</li>
}
</ul>
</li>
<li>
Project Details:<br />
<li>
module List :
<ul id="modulelist">
@foreach ( var module in ViewBag.modules )
{
<li>
@module
</li>
}
</ul>
</li>
Project StartDate : @ViewBag.StartDate.ToString("dd-MMM-yyyy") <br />
Project TotalPrice: @ViewBag.TotalPrice ₹ <br />
Project TotaDays : @ViewBag.TotalDays
</li>
</li>
标签:MVC
您可能感兴趣
- mvc razor 输出html
- mvc中validateinput属性失效
- MVC中outputcache缓存
- php入门教程环境搭建教程(PHP从零开始打造自己的MVC框架之入口文件实现方法详解)
- windows server 2008r2怎么安装(Windows Server2008 R2 MVC 环境安装配置教程)
- MVC 使用FileResult导出文件
- mvc中使用uploadify批量上传
- MVC中数据验证
- asp.net MVC处理流程
- Asp.net Mvc模型绑定
- MVC中CheckBox
- mvc中@helper的用法
- python如何编写一个用户登录系统(Python实现的登录验证系统完整案例基于搭建的MVC框架)
- iiS7中如何部署MVC3程序
- MVC中的ActionResult
- MVC使用HandleErrorAttribute自定义异常
- 经常发这三种 朋友圈 的人,要迅速屏蔽(经常发这三种朋友圈)
- 有种尴尬叫朋友圈忘屏蔽,大学生上演社死现场,父母亲自下场吐槽(有种尴尬叫朋友圈忘屏蔽)
- 朋友圈屏蔽你的人,可以直接看淡了(朋友圈屏蔽你的人)
- 金球奖只青睐那些会戴珠宝的女人(金球奖只青睐那些会戴珠宝的女人)
- 浙江省一个县,人口超40万,建县历史超1100年(浙江省一个县人口超40万)
- 五代十国南唐历代国君(五代十国南唐历代国君)
热门推荐
- ftp软件filezilla安装不了(filezilla连不上FTP服务器的解决方法)
- 宝塔面板怎么用ip访问站点(宝塔面板设置禁止通过IP直接访问网站防止恶意解析)
- vmware使用教程win10(VMware Workstation安装并安装WIN10操作系统连接外网步骤指导超详细教程)
- sql server事件跟踪器中常用的跟踪事件
- python如何遍历一个列表(说说如何遍历Python列表的方法示例)
- laravel 数据库迁移(Laravel数据库读写分离配置的方法)
- 织梦cms漏洞大全(织梦CMS利用php正则让文章的外链自动加nofollow)
- mysql复合索引会包含哪些索引(MySQL查询冗余索引和未使用过的索引操作)
- vue怎么实现预览与放大(Vue实现牌面翻转效果)
- SQL Server 批量导入数据的方法