MVC 向页面传值方式总结(2)
总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是:
- ViewBag
- ViewData
- TempData
- 向普通View页面传一个Model对象
- 向强类型页面传传一个Model对象
- 用一个ViewModel对象解决所有问题
首先我们需要明确的是我们从controller向view传值的时候,这些方式分别处于什么样的地位:
我们一般会向页面传递一个主要的类型的数据,一般是情况下是一个List<Model>,如果只有这个,很好办,一个model对象就解决了,但是往往除此之外还会有一些额外的零散的数据需要传递,比如分页的pageIndex,或者pageCount等等,这样的数据用原有的model就无能为力了,这时候,我们就可以用ViewBag、ViewData、TempData来传递这些额外的数据。
视图数据可以通过ViewBag属性访问,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类。对于ViewBag是如此的强大,意味着你能动态的set/get 值,增加任何数量的的额外字段而不需要强类型的检测。如:
control控制器

public
ActionResult Index() { List<string>
colors = new
List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); ViewData["listColors"]
= colors; ViewData["dateNow"]
= DateTime.Now; ViewData["name"]
= "Hajan"; ViewData["age"]
= 25; return
View();

control 控制器

public
ActionResult Index() { List<string>
colors = new
List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); ViewBag.ListColors = colors;
//colors
is List ViewBag.DateNow
= DateTime.Now; ViewBag.Name
= "Hajan"; ViewBag.Age
= 25; return
View(); }

你和上面的对比 你看见了不同吗?
1.使用ViewData
2.使用ViewBag

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的用法示例:

public ActionResult Index()
{
var model = new Review()
{
Body = "Start",
Rating=5
};
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>
MVC 向页面传值方式总结(2)的更多相关文章
- MVC 向页面传值方式总结(1)
ViewData传值. HomeController.cs Co de: public ActionResult Index() { ViewData["Title" ...
- MVC中页面传值方式总结
MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下: 一.Controller----------->View(控制器传到视图) 1.View ...
- MVC 向页面传值方式总结
总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通View页面传一个Model对象 向强类型页面传传 ...
- dotNET5的MVC页面传值方式总结
本文大致讲解mvc前后端的传值方式,包括control向view.view向control.以及action向action. 一.经典回顾 二.Controller向View传值 1. ViewBag ...
- Spring MVC 向页面传值-Map、Model和ModelMap
原文链接:https://www.cnblogs.com/caoyc/p/5635878.html Spring MVC 向页面传值-Map.Model和ModelMap 除了使用ModelAndVi ...
- Spring MVC 向页面传值-Map、Model、ModelMap、ModelAndView
Spring MVC 向页面传值,有4种方式: ModelAndView Map Model ModelMap 使用后面3种方式,都是在方法参数中,指定一个该类型的参数. Model Model 是一 ...
- Spring MVC 向页面传值-Map、Model和ModelMap https://www.cnblogs.com/caoyc/p/5635878.html
Spring MVC 向页面传值-Map.Model和ModelMap 除了使用ModelAndView方式外.还可以使用Map.Model和ModelMap来向前台页面创造 使用后面3种方式,都是在 ...
- iOS页面传值方式
普遍传值方式如下: 1.委托delegate方式: 2.通知notification方式: 3.block方式: 4.UserDefault或者文件方式: 5.单例模式方式: 6.通过设置属性,实现页 ...
- MVC[xml]页面传值
MVC 各种传值方式 ViewData传值.HomeController.cs Co de: public ActionResult Index(){ ViewData["Titl ...
随机推荐
- gitlab升级迁移(二)
前面我们写了一篇gitlab升级迁移的文章(https://www.cnblogs.com/liangyou666/p/9434158.html),这次我们主要是讲另一种升级迁移方法和其中遇到的一些问 ...
- topshelf 服务启动运行
topshlf 服务启动运行方式 安装:servicename.exe install 启动:servicename.exe start 卸载:servicename.exe uninstall
- 分布式系列五: RMI通信
RPC(Remote Procedure Call)协议 RPC协议是一种通过网络从远程计算机上请求服务, 而不需要了解底层网络技术的协议, 在OSI模型中处在应用层和网络层. 作为一个规范, 使用R ...
- day19模块1
http://www.cnblogs.com/Eva-J/articles/7228075.html#_label10 collections模块: 在内置数据类型(dict.list.set.tup ...
- word 内容控件属性编辑
场景: 别人发给自己一份word模板,基于统一性,里面包含了很多“内容控件”,一般情况下,只需要根据内容控件进行编辑即可,但如果想对内容控件本身做编辑操作,例如删除等. 操作: 单击 文件>选项 ...
- 关于在windows上远行的虚拟机为ubuntu16.04中不能复制和粘贴的问题解决方案
Linux安装 VMware tools 工具解决复制和粘贴的方法 VMware虚拟机中如何安装VMWare-Tools详解好处:可以支持图形界面,可以支持共享文件功能等 1 工具/原料 1)安装过虚 ...
- 叩响C#之门-继承
就记录下一些概念,以供备忘. 一生二,二生三,三生万物.类类相生,生生不息. 重写和重载的区别: 重载是指同一个类中相同名称但参数不同的方法. 重写是指继承关系中,在派生类中重写由基类继承来的方法 ...
- 你好!酷痞 Coolpy
欢迎你进入酷痞的物联网世界.这里有着自由的空气和自然的气息.接下来我将告诉你如果一步步建立一个自己专属的物联网平台. 由于目前的酷痞的官方域名还没有通过备案所以现在用临时域名解说本说明. 最终酷痞的官 ...
- Python学习(三十三)—— Django之ORM
Object Relational Mapping(ORM) 一.ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系 ...
- MyCat-简介
一MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件.运行在代码应用和MySQL数据库之间的应用. 前身 : corba. 是阿里开发的数据库中间件.实现M ...