MVC 向页面传值方式
来源:互联网 发布:pc优化软件 编辑:程序博客网 时间:2024/06/03 18:34
MVC 向页面传值方式总结
总结发现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 ListViewBag.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 向页面传值方式
- 向页面传值的方式
- 向页面传值的方式
- MVC中页面传值方式总结
- Spring MVC 向页面传值-Map、Model和ModelMap
- Spring MVC 向页面传值-Map、Model和ModelMap
- Spring MVC 向页面传值-Map、Model和ModelMap
- Spring MVC 向页面传值-Map、Model和ModelMap
- Spring MVC 向页面传值-Map、Model和ModelMap
- mvc Controller向View传值方式总结
- Spring 向页面传值的方式以及返回类型
- JSP页面向action传值方式总结
- springMvc向页面传值和读取的方式
- Spring 向页面传值以及接受页面传过来的参数的方式
- 【MVC】MVC中页面传值的几种方式总结
- MVC页面传值
- ASP.NET MVC Controller向View传值的几种方式
- 关于MVC中控制器(controller)向视图(view)传值的几种方式
- Linux学习总结(28)——Linux主机加固
- sync 数据同步
- golang defer 语句匿名函数和具名函数的区别
- 浅谈ListView和RecyclerView
- Ajax技术
- MVC 向页面传值方式
- yield 改写遍历目录方法,内存使用好低啊
- SpringMVCController介绍及常用注解
- TCP/IP、Http、Socket的区别
- c#上位机实现八路液位监测
- 俄罗斯方块之二授课计划总体规划
- ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器的区别
- 蓝桥杯 入门训练 A+B问题 Java
- MyEclipse、Eclipse在自动跳出ThreadPoolExecutor的debug窗口解决方法