前言

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

前奏

新建基本项目在Models文件夹下定义如下类:

    public class Person{public int Id { get; set; }public string Name { get; set; }public string BlogAddress { get; set; }public string Description { get; set; }}

我们在控制器的Action方法中实例化此类:

            var p = new Person(){Id = 98,Name = "xpy0928",BlogAddress = "http://www.cnblogs.com/CreateMyself",Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!"};

方式1 (ViewData)

我们利用ViewData以键值对的形式来存储上述实例化的对象,如下:

 ViewData["Person"] = p;

在视图中我们从ViewData中获取存储的值并转换成对象,如下:

@using ASP.NET_MVC_1.Models;@{var p = (Person)ViewData["Person"];
}

接着我们获取对象中的值:

<h1>Person</h1>
<h3>@p.Id</h3>
<h3>@p.Name</h3>
<h3>@p.BlogAddress</h3>
<h3>@p.Description</h3>

我们来看看是否获取到该对象的值,如下:

方式2(ViewBag)

将控制器Action方法以ViewBag创建动态表达式来进行,如下:

 ViewBag.Person = p;

在视图中,我们进行如下修改:

@using ASP.NET_MVC_1.Models;@{var p = ViewBag.Person as Person;
}

获取对象值同上,我们继续看看是否如我们所预想:

方式3(Model)

我们通过控制器中返回的View方法进行传递该对象,如下:

            var p = new Person(){Id = 98,Name = "xpy0928",BlogAddress = "http://www.cnblogs.com/CreateMyself",Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!"};return View(p);

此时视图中,我们将需要得到该强类型对象:

@using ASP.NET_MVC_1.Models;@model Person;

而获取对象的值则通过Model来获取,如下:

<h1>Person</h1>
<h3>@Model.Id</h3>
<h3>@Model.Name</h3>
<h3>@Model.BlogAddress</h3>
<h3>@Model.Description</h3>

毫无疑问结果依然如此:

方式4(TempData)

从字面意思来理解我们会误认为是临时对象,好像就使用一次就不会再用了,确实是这样吗?很显然不是这样,当然其生命周期确实很短。该对象是将数据从一个控制器的方法传递到另外一个方法上。什么意思呢?我们想象这样一个场景:当我们在控制器的Info方法上添加一个Person的信息后,我们跳转到另外一个方法TempDataObject上来显示该对象已经成功被创建。

下面我们来演示这种场景:

        public ActionResult Info(){var p = new Person(){Id = 98,Name = "xpy0928",BlogAddress = "http://www.cnblogs.com/CreateMyself",Description = "出生非贫即贵,你我无能为力,后天若不加以努力赶之超之,又能怪谁呢!自己都靠不住不靠谱,又能靠谁呢!"};//TODO 添加Person到数据库中TempData["info"] = "提示:已经成功添加一条数据到数据库中";return RedirectToAction("TempDataObject");}

创建一个TempData方法,获取上面传递过来的值,如下:

        public ActionResult TempDataObject(){return View();}

在方法对应的视图获取传递过来的值:

<h1>@TempData["info"]</h1>

我们通过访问Info,观察当跳转过来到该方法时后渲染视图是否能够获取到该值:

当然在上述过程中这是利用将一个Action中的数据通过TempData传递到另外一个Action中,但是我们需注意,这是利用跳转到TempDataObject才会正确显示数据,如果我们直接刷新页面将会出现System.NullReferenceException。

结语

关于其区别就不再叙述,园子中已有大量的总结,今天就到此为止。

本文转自Jeffcky博客园博客,原文链接:http://www.cnblogs.com/CreateMyself/p/5384138.html,如需转载请自行联系原作者

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

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

    起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...

  2. linux数据同步技术比较,linux下实现web数据同步的四种方式(性能比较)教程.docx

    linux下实现web数据同步的四种方式(性能比较)教程 实现web数据同步的四种方式=======================================1.nfs实现web数据共享2.rs ...

  3. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  4. 实现web数据同步的四种方式

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  5. 解决存储过程中数据安全问题的四种方式

    随着科技的不断发展,数据量也正在呈指数倍的增加.在这样一个大背景下,存储产品成为了时下市场中最热的产品.而数据的安全性也变得尤为重要.后端存储已经逐渐成为企业业务系统的核心和关键. 一般而言,我们有四 ...

  6. 【javaWeb】前后端传递数据交互的两种方式

    一.使用struct2的方法set及get 1.在jsp中直接定义定义form表单 <form id="formid" name= "myform" me ...

  7. [转]JSon数据解析的四种方式

    转至http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的js ...

  8. web前后台数据交互的四种方式

    利用cookie对象 Cookie是服务器保存在客户端中的一小段数据信息.使用Cookie有一个前提,就是客户端浏览器允许使用Cookie并对此做出相应的设置.一般不赞成使用Cookie. 后台代码 ...

  9. ASP.NET MVC学习之控制器篇

    一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MV ...

最新文章

  1. 随笔2:关于linux和python
  2. 安卓加载asset中的json文件_Android中读取asset路径下本地json文件
  3. Python的try... excep异常捕捉机制
  4. 手把手教你在Windows10环境下安装深度学习框架(pytorch or tensorflow)
  5. 新书《活用UML-需求分析高手》详细大纲(持续更新中)
  6. mysql数据库设计中的14个技巧
  7. 驱动程序的专业术语-秋镇菜版
  8. 企业网络之间资源互访
  9. 云小课 | MRS基础入门之HDFS组件介绍
  10. 女程序员做了个梦,众网友的神回复
  11. select .. into输出单/多行
  12. STLink MID Keli Debug下载程序时候出现cannot access target shutting down debug session的解决
  13. 杭电计算机专业第五轮评估,第五轮学科评估要来了!这些双非学科有机会冲击A级,入股不亏!...
  14. IOI2020国家集训队作业乱做
  15. 如何通过数据驱动业务发展
  16. 多文件批量下载打包成.zip
  17. 如何创建XS Job来完成定时任务
  18. 身份证提取生日和性别
  19. Go之Go语言是什么?Go有什么特点?Go语言的应用前景如何?
  20. 路由器如何设置上网(TP-LINK)

热门文章

  1. 你知道脑机接口中的“后门“攻击吗?它真的有可能在现实中实现
  2. 年轻人的第一只机器狗,只要1.6万
  3. 杨元庆捐资1亿人民币,要为母校上海交大建“最好的”高性能计算中心
  4. Go语言竟成恶意软件的最爱!4年来Go编写的恶意软件飙增2000%,网友:这也能怪Go?...
  5. 吴恩达的TensorFlow实践课上线,有Python基础就能听,4个月学完
  6. Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
  7. 数据库实例: STOREBOOK 表空间 编辑 表空间: TEMP
  8. 成为男人眼中魅力女人的十大要素
  9. Linux下php连接sql server 2008
  10. 常用命令-临时记录!