参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view

一,Controller 中的ActionResult方法会用一个View Template生成HTML页面反馈到浏览器中:

1,修改Index方法如下

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

2,在Index 方法中右键,添加View视图,Views视图下的HelloWorld文件夹中生成了对应的Index.cshtml文件

3,打开index.cshtml文件,并添加一行html代码如下:

@{ViewBag.Title = "Index";}
<h2>Index</h2>
<p>Hello from our View Template!</p>

4,右击index.cshtml,页面探测器Page Inspector打开(ctrl+K,ctrl+G),可看到生成的html页面,Ctrl+F5刷新(http://localhost:9898/HelloWorld/Index ),我们看到虽然Controller中的Index方法就只是简简单单的 Return View(),并没有特别指定要输出哪个View Page,但是MVC默认会调用Index.cshtml.这就是MVC中的Hard-Code.

以上页面的运行,后需要理解页面具体是怎么运行出来的:从一个ActionResult方法指向View页面显示在浏览器中

URL→Controller 中的ActionResult方法→ActionResult方法名对应的Views中同名的视图

二,了解_Layout.cshtml页面

注意到:上面所显示的这个index.cshtml的页面标题却是”index-我的ASP.NET MVC…”,这是因为index.cshtml调用了_layout.cshtml模板

下面我们来改一下View的模板页面:/Views/Shared/_Layout.cshtml

Layout.cshtml 布局页面,就相当于一个容器,可以把layout页面的布局以及内容套用于其它页面。

Layout.cshtml中的@RenderBody()是占位符,这里代替其它调用Layout.cshtml的页面内容,例如:我们打开链接http://localhost:9898/Home/About 这时候,about.cshtml的内容就嵌套到了layout.cshtml中的@renderBody()的位置

改变Layout中的Title: ViewBag的值加”-Movie App”

<title>@ViewBag.Title - Movie App</title>

子页面:

@{ ViewBag.Title = "Movie List";}

<h2>My Movie List</h2>

ViewBag.Title可以在layout.cshtml和index.cshtml之间进行传值,页面运行以后可以看到title:

三,传输数据从Controller到View:

Controller Classes 在浏览器请求URL的时候被调用

Controller Class中的代码就是处理浏览器请求,从数据库中检索数据,最终调用相应的View显示在浏览器中

View中不应该直接有与数据交互和业务逻辑的部分,View只可以接收从Controller传递过来的数据

这种分离模式,可以让你的代码简洁,测试性能以及可维护性能更高

ViewBag 是一个Dynamic Object,这意味着你可以传递任何类型的数据给它。

ViewBag 没有定义任何属性,直到你赋值给它。

ASP.NET MVC model binding system 会自动映射URL中的参数到Controller的方法的参数中。更新Controller中的Welcome方法如下:

   public ActionResult Welcome(string name, int numTimes)
{
ViewBag.Message = "Hello " + name;
ViewBag.NumTimes = numTimes;
return View();
}

运行一下,看到数据传递过程:

http://localhost:9898/HelloWorld/Welcome?name=Spring&numtimes=10(URL)

url请求传递到HelloWorldController的Welcome方法中

  public ActionResult Welcome(string name, int numTimes)

        {

            ViewBag.Message = "Hello " + name;

            ViewBag.NumTimes = numTimes;

            return View();

        }

↓Welcome中的方法的数据传递到View页面中

<ul>

    @for (int i = 1; i < ViewBag.NumTimes; i++)

    { 

        <li>@ViewBag.Message</li>

    }

</ul>

.cshtml显示效果:

ASP.NET MVC 学习2、从Controller传递数据到View的更多相关文章

  1. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  2. ASP.NET MVC 学习3、Controller左手从Model获取数据,右手传递到View页面

    参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-dat ...

  3. ASP.NET MVC 学习笔记-5.Controller与View的数据传递

    ViewData属性 ViewData属性是System.Web.Mvc.ControllerBase中的一个属性,它相当于一个数据字典.Controller中向该字典写入数据,ViewData[“K ...

  4. ASP.NET MVC 学习4、Controller中添加SearchIndex页面,实现简单的查询功能

    参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-method ...

  5. ASP.NET MVC 学习8、Controller中的Detail和Delete方法

    参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-details-and ...

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

    原文 ASP.NET MVC 5 学习教程:控制器传递数据给视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字 ...

  7. 【ASP.NET MVC 学习笔记】- 10 Controller和Action(1)

    本文参考:http://www.cnblogs.com/willick/p/3331521.html 1.继承IController接口,示例代码将当前请求的Controller和Action打印到浏 ...

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

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

  9. ASP.NET MVC学习系列(二)-WebAPI请求

    继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现 ...

随机推荐

  1. Winform控件学习-TreeView

    转自 http://www.cnblogs.com/zxlovenet/p/3589425.html      作者: 初行 TreeView控件用来显示信息的分级视图,如同Windows里的资源管理 ...

  2. html5上传文件并监听进度

    出处:   http://blog.csdn.net/small_rice_/article/details/21391625

  3. 【锋利的JQuery-学习笔记】菜单栏及其2级菜单

    效果图: 鼠标移动到菜单项后如下: html: <div id="nav" class="mainNav"> <ul class=" ...

  4. httpsClient

    Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...

  5. CF 295A Greg and Array (两次建树,区间更新,单点查询)

    #include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...

  6. HDU 3047 Zjnu Stadium(带权并查集)

    题意:有一个环形体育场,有n个人坐,给出m个位置关系,A B x表示B所在的列在A的顺时针方向的第x个,在哪一行无所谓,因为假设行有无穷个. 给出的座位安排中可能有与前面矛盾的,求有矛盾冲突的个数. ...

  7. 深入浅出ES6(三):生成器 Generators

    作者 Jason Orendorff  github主页  https://github.com/jorendorff ES6生成器(Generators)简介 什么是生成器? 我们从一个示例开始: ...

  8. Web前端业界氛围极好的群——鬼懿IT

    鬼群简介 鬼懿IT主群号:,鬼懿IT-成长群:181368696 , 创建于2005年12月 ,聚集的业内人事包括:阿当,大漠,辣妈,崔凯,Rei,周裕波,司徒正美,丸子,鬼森林,寒冬,franky, ...

  9. POJ2632Crashing Robots

    做模拟题做的我直接睡着了,题并不难,就是一个细心的问题,有一些细节问题注意了就差不多了,代码写的精美的一般找错误也好找一些,应该学着些好看的代码 #include<cstdio> #inc ...

  10. 深入浅出Java并发包—CAS机制

    在JDK1.5之前.Java主要靠synchronized这个关键字保证同步,已解决多线程下的线程不安全问题,但是这会导致锁的发生,会引发一些个性能问题. 锁主要存在一下问题 (1)在多线程竞争下,加 ...