ASP.NET MVC 5 学习教程:控制器传递数据给视图
起飞网 ASP.NET MVC 5 学习教程目录:
- 添加控制器
- 添加视图
- 修改视图和布局页
- 控制器传递数据给视图
- 添加模型
- 创建连接字符串
- 通过控制器访问模型的数据
- 生成的代码详解
- 使用 SQL Server LocalDB
- Edit方法和Edit视图详解
- 添加查询
- Entity Framework 数据迁移之添加字段
- 添加验证
- Details 和 Delete 方法详解
在讨论数据库和模型之前,让我们先说说容控制器传递数据给视图。控制器类在响应传入的请求时被调用,控制器类是你写代码处理浏览器请求、从数据库中检索数据、并最终决定发送什么类型的响应给浏览器。视图模板被控制器用来生成和格式化HTML响应给浏览器。
控制器的责任是为视图模板提供必须的数据或对象,用来绘制HTML响应浏览器。一个最佳实践是:视图模板从来不参与业务逻辑,或直接与数据库交互。相反的,视图模板仅与控制器提供的数据一起工作。保持这种“关注点分离(separation of concerns)”有助于保持代码的整洁,可测试性和更容易维护。
目前,HelloWorldController 类中的 Welcome 方法需要两个参数:name 和 numTimes,然后直接与将值输出给浏览器。让我们修改控制器,使用视图来替换直接相应string字符串。视图模板会生成一个动态响应,这意味着你需要通过控制器传递一些数据用来生成响应。要做到这些,你需要通过在控制器中将数据(参数)放到ViewBag对象中,视图可以访问ViewBag对象。
回到 HelloWorldController.cs 文件中,修改Welcome方法,在ViewBag对象中添加一个Message和NumTimes值。ViewBag是dynamic 类型的对象,你可以为它添加任何你想要的数据,ViewBag对象在你添加数据之前,不具有任何属性。ASP.NET MVC 模型绑定系统从地址参数中自动映射命名的参数(name 和 numTimes)到方法中。完整的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 学习教程:控制器传递数据给视图相关推荐
- ASP.NET MVC 5 学习教程:添加控制器
ASP.NET MVC 5 学习教程:添加控制器 原文 ASP.NET MVC 5 学习教程:添加控制器 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控 ...
- ASP.NET MVC 5 学习教程:修改视图和布局页
ASP.NET MVC 5 学习教程:修改视图和布局页 原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图 ...
- ASP.NET MVC 5 学习教程:添加查询
起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控制器访问模型的数据 生成的代码详解 使用 SQL Se ...
- ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解
ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 原文 ASP.NET MVC 5 学习教程:Details 和 Delete 方法详解 在教程的这一部分,我们将研究一 ...
- ASP.NET MVC之从控制器传递数据到视图四种方式(一)
前言 本系列开始着手讲述ASP.NET MVC,也算是自己对基础的回顾以及进一步深入学习,保证每天发表一篇该系列文章,关于基本知识则不再叙述,园子有关文章不胜枚举,这一系列若有叙述不当或错误之处,欢迎 ...
- ASP.NET MVC Music Store教程(2):控制器
ASP.NET MVC Music Store教程(2):控制器 转自http://firechun.blog.163.com/blog/static/3180452220110272197830/ ...
- ASP.NET MVC 5 入门教程 (2) 控制器Controller
原文:ASP.NET MVC 5 入门教程 (2) 控制器Controller 文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get ...
- ASP.NET MVC Music Store教程(1):概述和新项目
ASP.NET MVC Music Store教程(1):概述和新项目 转自 http://firechun.blog.163.com/blog/static/31804522201102709374 ...
- ASP.NET MVC 5 入门教程 (3) 路由route
文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-get-started-route.html 上一节:ASP.NET MVC 5 入门 ...
最新文章
- Bicolor软件 中 GATB
- 历经5轮审稿被拒,那个“​没有Science,没有娃”的交大博士,最终申诉成功发顶刊,他说做科研,要尽全力再坚持一下......
- python开发串口通信界面_python3脚本篇1-串口通讯脚本
- Python出现SyntaxError: Non-ASCII character '\xe7' in file 错误的解决办法
- Linux的一些配置文件位置
- HYSBZ 1010 玩具装箱toy (决策单调DP)
- “新型肺炎患者同乘查询系统”上线,超2千万用户使用
- 【JavaScript基础笔记】数据类型转换、false值、内存图、垃圾回收和深浅拷贝简易概念...
- 简要分析武汉一起好P2P平台的核心功能
- moodle 中文文件名无法打开和下载问题
- lodop php 快递单_Lodop打印模板 - 让Web打印易起来~~ – 基于ThinkPHP和Bootstrap的极速后台开发框架...
- openlayers中比例尺的计算原理
- Java基础每日一练—第5天:预测身高案列
- linux dpm机制分析
- ngx-datatable
- 【云和恩墨大讲堂】杨俊 | 迁移神技XTTS-恩墨小王子再战32TB跨平台U2L
- 基数排序——多关键字排序(MSD/LSD)以及链式基数排序
- 2015美国大学计算机科学专业排名,2015年USNews美国大学计算机科学专业研究生排名...
- Windows下搭建ant+jenkins+jmeter自动化接口测试框架
- Linq to Sql 事务处理
热门文章
- 为什么各大银行一直在不遗余力推广信用卡呢?
- 贷款必看:如何信审电话才能提高贷款通过率?
- 在看世界杯的闲暇看看电视剧《长恨歌》
- 底部检测的do...while循环
- 基于sobel算法的边缘检测设计与实现
- java abstractset 继_java集合框架-AbstractSet
- php8vsgo,vscode编辑好go语言代码要怎么运行
- vscode 调试_如何使用VSCode调试JS?
- python 窗口程序开发课程_从零开始学Python - 第019课:使用PyCharm开发Python应用程序...
- 一些图形学中的数学应用