Controller向View传值方式总结

http://www.cnblogs.com/guohu/p/4377974.html

总结发现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、ViewData、TempData之间的差别:

ViewData与ViewBag之间非常相似,两者使用的场景基本一致,但是ViewData的类型是很明确的,使用的时候经常需要强制类型转换,而ViewBag的类型是动态的,不确定的,直接就可以使用,他们的传值范围是:controller向view传值,view自己和自己传值。而TempData存在的目的就是为了防止redirect时候数据的丢失,所以它的传值范围是当前controller和跳转后的controller之间。

下面来详细的讲述他们的具体用法:

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>

时间: 2024-10-21 03:36:31

Controller向View传值方式总结的相关文章

asp.net mvc中Controller向View传值方式总结

http://www.cnblogs.com/gaopin/archive/2012/11/13/2767515.html http://www.cnblogs.com/a164266729/p/4917202.html //1.ViewData传递 ViewData是Key/Value对 ViewData["str1"] = "hello 1"; //ViewData.str2 = "world 2"; //2.ViewBag传递 动态 且是强

C# Controller向View传值方式总结

http://www.cnblogs.com/key1309/p/ViewData_TempData_ViewBag_ViewModel_controller%E5%90%91View%E4%BC%A0%E5%80%BC.html 原文地址:https://www.cnblogs.com/zquan/p/9771776.html

ASP.NET MVC Controller向View传值的几种方式

1)ViewBag ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName 控制器代码: 1 public ActionResult Index() 2 { 3 ViewBag.name = "梁顺盛"; 4 ViewBag.message = "欢迎使用MVC设计模式~~"; 5 return View(); 6 } 视图代码: <div> <!--利用HtmlHelper创建TextBox时,使用名称与ViewBag

MVC Controller向View传值(ViewData与ViewBag)

最近在开发项目中,使用的是ASP.NET MVC由于之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习! 一:使用 ViewData使用: public ActionResult Index() { List<string> colors = new List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); Vi

MVC Controller 与 View 传值

Controller 到 View 1 强类型 控制器 // GET: /Test/ public ActionResult Index() { DateTime date = DateTime.Now; //大部分时候使用自定义类型 return View(date); } 视图 @model DateTime @{ ViewBag.Title = "Index"; } <h2>Index</h2> <h2>The time is: @Model.

Asp.net MVC中Controller向View传值

一.使用Model 首先创建一个Model public class HelloModel { private string _name; private string _text; public string Name { get { return _name; } set { _name = value; } } public string Text { get { return _text; } set { _text = value; } } } 然后创建强类型的View视图,在View

Controller向View传值

ViewBag 1 System.Web.Mvc.DynamicViewDataDictionary ViewBag使用的动态视图是赋值给ViewBag时的对象,例如, Controller中 1 ViewBag.CategoriesList = categoriesList;//categoriesList是一个Category类型的list View中 1 @foreach (var item in ViewBag.CategoriesList) 2 { 3 if (item.Code%10

【MVC框架】——View和Controller之间的传值

在MVC中,Controller运行一个能够说是路由功能.它通过View传过来的数据,来决定应该调用哪一个Model,相同会把Model处理完的数据传给View,所以就总是涉及到Controller和View的传值,那么它们之间是怎么传值的呢? Controller向View传值 1.使用ViewBag Controller <span style="font-family:KaiTi_GB2312;font-size:18px;">public ActionResult

MVC中页面传值方式总结

MVC中的页面传值,通常指Controller和view之间的数据传递,经常用到的有几种方式,总结如下: 一.Controller----------->View 1.ViewData 获取或设置一个字典,其中包含在控制器和视图之间传递的数据.使用ViewData是采用键值对的形式,对所定义的数据进行传递.在View中会自动识别到拥有唯一键值的ViewData,并将数据显示出来. 例子: public ActionResult() { <span style="white-space