前奏

1. 在新建项目中的Models文件下,新建Products类:

 public class Products
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}

2. 在控制器中实例化此类

var p = new Products()
{
Id = ,
Name = "饮料",
Price = 2.5
};

方式1:ViewData

将控制器中的方法用ViewData以键值对的形式类存储上述的实例化对象,如下:

ViewData["person"] = p;

然后在视图中获取ViewData中的值,并转换对象,如下:

@{
var p = (Products)ViewData["person"];
}
<h1>@p.Id</h1>
<h2>@p.Name</h2>
<h3>@p.Price</h3>

方式2:ViewBag

将控制器中的方法利用ViewBag动态表达式的形式存储上述对象,如下:

ViewBag._Product = p;

修改视图,如下:

@{
var p = (Products)ViewBag._Product;
}

方式3:Model

将控制器中的方法返回View上述对象,如下:

public ActionResult Index()
{
var p = new Products()
{
Id = 1,
Name = "饮料",
Price = 2.5
};
return View(p);
}

而我们在视图中得到强制类型对象Products,如下:

@using MvcTest.Models;
@model Products
@{
ViewBag.Title = "Index";
}
<h1>@Model.Id</h1>
<h2>@Model.Name</h2>
<h3>@Model.Price</h3>

方式4:TempData

TempData可以通过转向继续使用,因为它的值保存在Session中。但TempData只能经过一次传递,之后会被系统自动清除。

下面我将演示从Index动作转向Order动作,并在视图中输出TempData中存储的值。

首先在控制中新建Action方法,命名为Order方法,代码如下:

public ActionResult Index()
{
var p = new Products()
{
Id = ,
Name = "饮料",
Price = 2.5
};
TempData["_product"] = p;
return RedirectToAction("Order");
}
public ActionResult Order()
{
      return View();
}

修改视图如下:

@{
Products p = (Products)TempData["_product"];
}

假设控制器中的代码修改如下:

public ActionResult Index()
{
var p = new Products()
{
Id = ,
Name = "饮料",
Price = 2.5
};
TempData["_product"] = p;
return RedirectToAction("Order");
}
public ActionResult Order()
{
return RedirectToAction("Detail");
}
public ActionResult Detail()
{
Products _product = (Products)TempData["_product"];
return View("");
}

转向:Index — Order — Detail,那么在Detail方法中,是不能获取到TempData对象的,因为TempData只能经过一次传递,之后会被系统自动清除。

输出结果

源码下载

ASP.NET MVC之控制器传递数据到视图的四种方式的更多相关文章

  1. ASP.NET MVC学习——控制器传递数据到view的简单案例

    从控制传数据到view端的方法: 方法一:修改Control数据,添加ViewBag 1.ViewBag.+ 任意变量名 = "你想要输入的数据" 2.在Control对应的csh ...

  2. ASP.NET MVC 5 学习教程:控制器传递数据给视图

    原文 ASP.NET MVC 5 学习教程:控制器传递数据给视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字 ...

  3. ASP.NET MVC中使用Unity进行依赖注入的三种方式

    在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...

  4. ASP.NET MVC之从控制器传递数据到视图四种方式(一)

    前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...

  5. ASP.NET MVC之从控制器传递数据到视图四种方式

    前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...

  6. ASP.NET MVC 在控制器中获取某个视图动态的HTML代码

    如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中,然后通过代码传入model,动态获取cshtml中的HTML代码 当然 ...

  7. MVC ,Action方法传数据给视图有几种方式?--PS:tempData和Viewbag,还有ViewData之间的区别

    //---------------------------------控制器向视图传递数据 public ActionResult TransData() { //1.ViewBag ViewBag. ...

  8. ASP.NET MVC之从控制器传递数据到视图方式

    为了演示,先定义一个类 新建基本项目在Models文件夹下定义如下类: public class Person { public int Id { get; set; } public string ...

  9. [Asp.net mvc]Asp.net mvc 使用Json传递数据

    在之前的练习中一直是直接传递的Model到后台或是单个数据到后台,今天在使用中遇到了点问题,不能使用Model传递到后台,但又要实现多个数据到后台,实验了多次有了以下的解决方案,给自己留个笔记. 功能 ...

随机推荐

  1. jquery validate remote验证唯一性

    jquery.validate.js 的 remote 后台验证 之前已经有一篇关于jquery.validate.js验证的文章,还不太理解的可以先看看:jQuery Validate 表单验证(这 ...

  2. leetcode第37题--Count and Say

    题目:(据说是facebook的面试题哦) The count-and-say sequence is the sequence of integers beginning as follows:1, ...

  3. 与6lowpan最相关的RFC文档列表

    有关于6lowpan最原始的文档,请参考下面的链接与截图: http://datatracker.ietf.org/wg/6lowpan/

  4. onsite

    领英.脸书面试以及onsite小记(北美)   最近两个月忙于找工作,投了不少简历,比较牛逼的公司里面就领英和脸书理我了,都是同学朋友内推的功劳.没想到自己也比较争气,一路杀到了最后一轮,拿到了两家的 ...

  5. 【MS SQL】把多个数据库合并为一个新的数据库

    原文:[MS SQL]把多个数据库合并为一个新的数据库 因应工作要求,需要把两个数据库合并成一个库: 一开始使用"导入数据.导出数据和复制数据库"三个工具时,没有达到要的效果. 后 ...

  6. Android: 自定义Tab样式,一种简单的方式。

    之前看到过论坛里已经有人发过自定义Tab样式的帖子,感觉有些复杂了,这里分享个简单的方法. 1.制作4个9patch的tab样式,可参考android默认的资源 tab_unselected.9.pn ...

  7. NhibernateProfiler-写个自动破解工具(源码)

    04 2013 档案   [屌丝的逆袭系列]是个人都能破解之终结NhibernateProfiler-写个自动破解工具(源码) 摘要: 破解思路分析及手动破解 增加“附加到进程”功能--功能介绍增加“ ...

  8. oracle读写文件--利用utl_file包对磁盘文件的读写操作

    oracle读写文件--利用utl_file包对磁盘文件的读写操作 摘要: 用户提出一个需求,即ORACLE中的一个表存储了照片信息,字段类型为BLOB,要求能导出成文件形式. 本想写个C#程序来做, ...

  9. dbcp的配置

    tomcat的 配置,进入conf->context.xml <Resource name="mysql"     auth="Container" ...

  10. every、some、filter、map、forEach 方法的区别总结

    API功能描述: [every]:Boolean 遍历数组并执行回调,如果每个数组元素都能通过回调函数的测试则返回true,否则返回false.一旦返回false,将立即终止循环. [some]:Bo ...