MVC:Control与View传值
MVC页面传值的方式主要有三种:
第一种:
  采用ViewData。采用键值对的方式,ViewData存储的是一个object类型,传到view层需要强类型转换;使用起来类似于字典集合模式:
  ViewData["key"]="value"
第二种:
采用ViewBag。ViewBag是ViewData模式的一部分,采用模式也就是ViewBag.key=value.
PS:
1、关于ViewData和ViewBag对比如下
ViewData与ViewBag对比:
| ViewData | ViewBag | 
| 它是Key/Value字典集合 | 它是dynamic类型对像 | 
| 从Asp.net MVC 1 就有了 | ASP.NET MVC3 才有 | 
| 基于Asp.net 3.5 framework | 基于Asp.net 4.0与.net framework | 
| ViewData比ViewBag快 | ViewBag比ViewData慢 | 
| 在ViewPage中查询数据时需要转换合适的类型 | 在ViewPage中查询数据时不需要类型转换 | 
| 有一些类型转换代码 | 可读性更好 | 
2、关于ViewData和ViewBag的使用,举例如下:
Control中一个action的代码:
public ActionResult GetView()
{
Employee emp = new Employee();
emp.FirstName = "Sukesh";
emp.LastName = "Marla";
emp.Salary = ;
ViewData["Employee"] = emp;
//ViewBag.empobj = emp;
return View("MyView");
}
该action对应的View代码如下:
@{
    Layout = null;
}
@using MyMVC3Demo.Models
<!DOCTYPE html>
<html>
<head>
    <title>MyView</title>
</head>
<body>
    <div>
        @{
            Employee emp = (Employee)ViewData["Employee"];
            }
        <b>Employee Details</b><br />
        Employee Name:@emp.FirstName @emp.LastName<br />
        Employee Salary:@emp.Salary.ToString("C")
    </div>
</body>
</html>
注意:该地方引用了using命名空间,进行类型转换;
3、使用情况:
使用viewdata和viewbag可以实现数据的传值,但是针对数据类型的转换确实一个前后脱节的过程,简单的说,如果Control和View之间没有定义好Key和数据类型,那么数据转换的时候,可能就潜在出现问题,于是便有了第三种传值方式;
第三种:
强类型的view获取数据类型,实现代码如下:
Control中某个Action代码如下:
public ActionResult GetView()
{
Employee emp = new Employee();
emp.FirstName = "Sukesh";
emp.LastName = "Marla";
emp.Salary = ;
//ViewData["Employee"] = emp;
//ViewBag.empobj = emp;
return View("MyView",emp);
}
注意:返回View的时候需要将实体emp带到View中;
view对应的代码如下:
@using MyMVC3Demo.Models
@model Employee
@{
Layout = null;
} <!DOCTYPE html>
<html>
<head>
<title>MyView</title>
</head>
<body>
<div> <b>Employee Details3</b><br />
Employee Name:@Model.FirstName @Model.LastName<br />
Employee Salary:@Model.Salary.ToString("C")<br />
@if (Model.Salary > )
{
<span style=" background-color:Yellow">EmplaySale</span>
}
else
{
<span style="background-color:Green">SSL</span>
}
</div>
</body>
</html>
注意:需要先声明@model ,该语句就是告知View要传递的数据类型,以便于数据的强类型转换。@Model就可以使用该页面接收到的实体数据了。
MVC:Control与View传值的更多相关文章
- Asp.Net MVC Control向View传值
		1.通过View(Parameter)参数传值 Control: namespace MyMVCDemo.Controllers { public class PersonControlle ... 
- 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是如 ... 
- MVC1:.Net MVC  Cotroller向View传值
		下面介绍 ASP .Net MVC中 Cotroller 向 View 传值 的4中方式: ViewBag,ViewData,TempData,Model. (注:参数可根据需要为复杂类型,只需在应用 ... 
- MVC Controller向View传值(ViewData与ViewBag)
		近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ... 
- MVC [Control与View交互]
		<1> Home控制器 using System; using System.Collections.Generic; using System.Data; using System.Da ... 
- ASP.NET MVC 控制器向View传值的三种方法
		转自:http://www.cnblogs.com/shinima/p/3940452.html 1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResu ... 
- MVC Controller 与 View 传值
		Controller 到 View 1 强类型 控制器 // GET: /Test/ public ActionResult Index() { DateTime date = DateTime.No ... 
- MVC 控制器向View传值的三种方法(转)
		1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResult Index() { DateTime date = DateTime.Now; return ... 
随机推荐
- 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨(阅读小结)
			原文链接:https://yq.aliyun.com/articles/61941?spm=5176.100239.bloglist.64.UPL8ec 某会议中的一篇演讲,主要讲述深度学习在图像领域 ... 
- HDU——PKU题目分类
			HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ... 
- 31 GroupSock(AddressString)——live555源码阅读(四)网络
			31 GroupSock(AddressString)——live555源码阅读(四)网络 31 GroupSock(AddressString)——live555源码阅读(四)网络 简介 Addre ... 
- 29 GroupSock(NetAddressList)——live555源码阅读(四)网络
			29 GroupSock(NetAddressList)——live555源码阅读(四)网络 29 GroupSock(NetAddressList)——live555源码阅读(四)网络 简介 Net ... 
- EXTJS动态改变store的proxy的params
			动态改变store的条件参数.var store = win.down('grid[name=sourceGrid]').getStore(); Ext.apply(store.proxy.extra ... 
- yuv转bmp
			#ifdef _INTERFACE_H #error _INTERFACE_H has be exsisted #else #define _INTERFACE_H #include "st ... 
- 【自动部署】Ansible 怎么通过堡垒机/跳板机 访问目标机器
			Ansible机器的 /root/.ssh/config 配置如下即可:Host 目标机器IP User root IdentityFile=/root/.ssh/xxx_id_rsa ProxyCo ... 
- CSS——display和float
			1.display 属性规定元素应该生成的框的类型. 值 描述 none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素 ... 
- poll函数
			poll函数与select函数的功能基本一样,其定义如下: #include <poll.h> int poll(struct pollfd fds[], nfds_t nfds, int ... 
- CentOS7下安装soaplib
			测试安装 cd ENV . bin/activate yum install libxml2-devel libxslt-devel pip install soaplib 安装中遇到的问题: Uni ... 
