起飞网 ASP.NET MVC 5 学习教程目录:

  • 添加控制器
  • 添加视图
  • 修改视图和布局页
  • 控制器传递数据给视图
  • 添加模型
  • 创建连接字符串
  • 通过控制器访问模型的数据
  • 生成的代码详解
  • 使用 SQL Server LocalDB
  • Edit方法和Edit视图详解
  • 添加查询
  • Entity Framework 数据迁移之添加字段
  • 添加验证
  • Details 和 Delete 方法详解

在讨论数据库和模型之前,让我们先说说容控制器传递数据给视图。控制器类在响应传入的请求时被调用,控制器类是你写代码处理浏览器请求、从数据库中检索数据、并最终决定发送什么类型的响应给浏览器。视图模板被控制器用来生成和格式化HTML响应给浏览器。

控制器的责任是为视图模板提供必须的数据或对象,用来绘制HTML响应浏览器。一个最佳实践是:视图模板从来不参与业务逻辑,或直接与数据库交互。相反的,视图模板仅与控制器提供的数据一起工作。保持这种“关注点分离(separation of concerns)”有助于保持代码的整洁,可测试性和更容易维护。

目前,HelloWorldController 类中的 Welcome 方法需要两个参数:namenumTimes,然后直接与将值输出给浏览器。让我们修改控制器,使用视图来替换直接相应string字符串。视图模板会生成一个动态响应,这意味着你需要通过控制器传递一些数据用来生成响应。要做到这些,你需要通过在控制器中将数据(参数)放到ViewBag对象中,视图可以访问ViewBag对象。

回到 HelloWorldController.cs  文件中,修改Welcome方法,在ViewBag对象中添加一个Message和NumTimes值。ViewBag是dynamic 类型的对象,你可以为它添加任何你想要的数据,ViewBag对象在你添加数据之前,不具有任何属性。ASP.NET MVC 模型绑定系统从地址参数中自动映射命名的参数(namenumTimes)到方法中。完整的HelloWorldController.cs文件如下:

代码清单1:HelloWorldController.cs文件

using System.Web;
using System.Web.Mvc;namespace MvcMovie.Controllers
{public class HelloWorldController : Controller{public ActionResult Index(){return View();}public ActionResult Welcome(string name, int numTimes = 1){ViewBag.Message = "Hello " + name;ViewBag.NumTimes = numTimes;return View();}}
}

现在ViewBag对象已经包含了数据,它会被自动传递给视图。

接下来,你需要一个Welcome视图模板。在生成菜单中,选择生成解决方案(或使用快捷键 CTRL+SHIFT+B)确定项目已经编译了。

Views\HelloWorld 文件夹右键,选择“添加”>“支架”:

图1:添加视图菜单

在添加支架对话框中,选择“MVC 5 View - Empty without model”。

图2:添加支架对话框

在Add View对话框中,将视图命名为Welcome

图3:Add View对话框

文件MvcMovie\Views\HelloWorld\Welcome.cshtml  已经创建好了。

在文件Welcome.cshtml  的<h2>元素下添加如下的代码,完整的代码如下:

@{
    ViewBag.Title = "Welcome";
}<h2>Welcome</h2><ul>@for (int i = 0; i < ViewBag.NumTimes; i++){<li>@ViewBag.Message</li>}
</ul>

运行应用程序,在浏览器中查看如下地址:

http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4

现在数据从URL取出来,通过模型绑定传递给控制器,控制器将数据封装在ViewBag对象中,传递给视图,然后视图将数据以HTML的方式呈现给用户。

图4:Welcome视图

在上面的例子中,我们使用ViewBag对象将数据从控制器传递给视图。在家下来的章节中,我们会使用视图模型来传递数据。使用视图模型传递数据比用ViewBag要好得多。

这也是模型“M”的一种,但并没有使用数据库。我们接下来要学习的是创建一个数据库,创建一个真正意义的视图模型。

本文转自起飞网,原文地址:http://www.qeefee.com/mvc/mvc-5-passing-data-from-the-controller-to-the-view

转载于:https://www.cnblogs.com/youring2/p/mvc-5-passing-data-from-the-controller-to-the-view.html

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

  1. ASP.NET MVC 5 学习教程:添加控制器

    ASP.NET MVC 5 学习教程:添加控制器 原文 ASP.NET MVC 5 学习教程:添加控制器 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控 ...

  2. ASP.NET MVC 5 学习教程:修改视图和布局页

    ASP.NET MVC 5 学习教程:修改视图和布局页 原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图 ...

  3. ASP.NET MVC 5 学习教程:添加查询

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

  4. ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解

    ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...

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

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

  6. ASP.NET MVC Music Store教程(2):控制器

    ASP.NET MVC Music Store教程(2):控制器 转自http://firechun.blog.163.com/blog/static/3180452220110272197830/ ...

  7. ASP.NET MVC 5 入门教程 (2) 控制器Controller

    原文:ASP.NET MVC 5 入门教程 (2) 控制器Controller 文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get ...

  8. ASP.NET MVC Music Store教程(1):概述和新项目

    ASP.NET MVC Music Store教程(1):概述和新项目 转自 http://firechun.blog.163.com/blog/static/31804522201102709374 ...

  9. ASP.NET MVC 5 入门教程 (3) 路由route

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...

最新文章

  1. Bicolor软件 中 GATB
  2. 历经5轮审稿被拒,那个“​没有Science,没有娃”的交大博士,最终申诉成功发顶刊,他说做科研,要尽全力再坚持一下......
  3. python开发串口通信界面_python3脚本篇1-串口通讯脚本
  4. Python出现SyntaxError: Non-ASCII character '\xe7' in file 错误的解决办法
  5. Linux的一些配置文件位置
  6. HYSBZ 1010 玩具装箱toy (决策单调DP)
  7. “新型肺炎患者同乘查询系统”上线,超2千万用户使用
  8. 【JavaScript基础笔记】数据类型转换、false值、内存图、垃圾回收和深浅拷贝简易概念...
  9. 简要分析武汉一起好P2P平台的核心功能
  10. moodle 中文文件名无法打开和下载问题
  11. lodop php 快递单_Lodop打印模板 - 让Web打印易起来~~ – 基于ThinkPHP和Bootstrap的极速后台开发框架...
  12. openlayers中比例尺的计算原理
  13. Java基础每日一练—第5天:预测身高案列
  14. linux dpm机制分析
  15. ngx-datatable
  16. 【云和恩墨大讲堂】杨俊 | 迁移神技XTTS-恩墨小王子再战32TB跨平台U2L
  17. 基数排序——多关键字排序(MSD/LSD)以及链式基数排序
  18. 2015美国大学计算机科学专业排名,2015年USNews美国大学计算机科学专业研究生排名...
  19. Windows下搭建ant+jenkins+jmeter自动化接口测试框架
  20. Linq to Sql 事务处理

热门文章

  1. 为什么各大银行一直在不遗余力推广信用卡呢?
  2. 贷款必看:如何信审电话才能提高贷款通过率?
  3. 在看世界杯的闲暇看看电视剧《长恨歌》
  4. 底部检测的do...while循环
  5. 基于sobel算法的边缘检测设计与实现
  6. java abstractset 继_java集合框架-AbstractSet
  7. php8vsgo,vscode编辑好go语言代码要怎么运行
  8. vscode 调试_如何使用VSCode调试JS?
  9. python 窗口程序开发课程_从零开始学Python - 第019课:使用PyCharm开发Python应用程序...
  10. 一些图形学中的数学应用