纵有疾风起
人生不言弃

开放、平等、协作、快速、分享

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

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

image

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

图2:添加支架对话框

image

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

图3:Add View对话框

image

文件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视图

image

在上面的例子中,我们使用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

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 开放、平等、协作、快速、分享
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录