zoukankan      html  css  js  c++  java
  • ASP.NET MVC 5 学习教程:控制器传递数据给视图

    起飞网 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)确定项目已经编译了。

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

    图1:添加视图菜单

    image

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

    图2:添加支架对话框

    image

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

    图3:Add View对话框

    image

    文件MvcMovieViewsHelloWorldWelcome.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

  • 相关阅读:
    查看电脑电池报告
    git上传文件
    k8s 跨namespace的service相互访问
    Shell中的${},##和%%的使用
    如何去掉excel表格中的单引号?
    忘密码时系统如何添加新账户!
    使用windows 脚本更改电脑的IP地址
    如何让WIN10自动修改自己的门牌号(IP)呢?
    Win7系统电脑共享打印机提示0x000006d9错误代码怎么办?
    ps抠图技术汇总
  • 原文地址:https://www.cnblogs.com/youring2/p/mvc-5-passing-data-from-the-controller-to-the-view.html
Copyright © 2011-2022 走看看