ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图

摘要:
MVC3.0视图引擎MVC3.0为我们提供了两种视图引擎ASPX(C#)和RazorASPX(C#)引擎ASP.NETMVC框架支持使用视图引擎生成视图。返回到前面的publicActionResultIndex(){returnView();}修改前面的代码让Controller的Index返回一个ActionResult对于ActionResult请参见:我要学ASP.NETMVC3.0(五):入手Controller/Action右击该Action弹出窗体---选择添加视图建议不要修改视图名称,后续会慢慢解释此时在View文件夹中会对应Controller生成一个Action对应的View视图在视图里面编写html代码@{ViewBag.Title="主页";}HelloWorld运行效果控制器和视图之间传递的数据很多时候我们要把一些数据传递到界面上来。

ASP.NET MVC 3.0(一): MVC 3.0 的新特性 摘要

ASP.NET MVC 3.0(二): MVC的概念及MVC 3.0开发环境

ASP.NET MVC 3.0(三): 初识MVC的Url映射潜规则Routing

ASP.NET MVC 3.0(四): 我要MVC潜规则之配置Routing

ASP.NET MVC 3.0(五): 入手Controller/Action

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图

ASP.NET MVC 3.0(七): MVC 3.0 新的Razor引擎

ASP.NET MVC 3.0(八): MVC 3.0 传递和保存你的Model

ASP.NET MVC 3.0(九): MVC 3.0 验证你的Model

ASP.NET MVC 3.0(十): MVC 3.0 使用 Forms身份验证

ASP.NET MVC 3.0(十一): MVC 3.0 使用筛选器

ASP.NET MVC 3.0(十二): MVC 3.0 使用自定义的Html控件

ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击

ASP.NET MVC 3.0(十四): MVC 3.0 实例系列之创建数据表格

ASP.NET MVC 3.0(十五): MVC 3.0 实例系列之表格的排序

ASP.NET MVC 3.0(十六): MVC 3.0 实例系列之表格数据的分页

ASP.NET MVC 3.0(十七): MVC 3.0 实例之表格中数据的筛选

ASP.NET MVC 3.0(十八): MVC 3.0 实例系列之表格中合并排序、分页和筛选

ASP.NET MVC 3.0(十九): MVC 3.0 实例之使用开源控件实现表格排序和分页

概述

在模型-视图-控制器 (MVC) 模式中,视图专门用于封装呈现逻辑。这些视图不应包含任何应用程序逻辑或数据库检索代码。所有应用程序逻辑都应该由控制器进行处理。视图使用从控制器传递给它的数据来呈现相应的 UI。此数据是使用View方法从控制器操作方法中传递给视图的。

在 MVC Web 应用程序的普通工作流中,控制器操作方法将处理传入的 Web 请求。

这些操作方法使用传入的参数值执行应用程序代码以及检索或更新数据库中的数据模型对象。然后,这些方法会选择一个将响应呈现到浏览器的视图。

MVC 3.0视图引擎

MVC 3.0为我们提供了两种视图引擎ASPX(C#)和Razor(CSHTML)

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第1张

ASPX(C#)引擎

ASP.NET MVC 框架支持使用视图引擎生成视图 (UI)。默认情况下,MVC 框架使用从现有 ASP.NET 页面 (.aspx)、母版页 (.master) 和用户控件 (.ascx) 类型中继承的自定义类型(ViewPageViewMasterPageViewUserControl)作为视图。

Razor(CSHTML)引擎

_appstart.cshtml:

应用程序启动时在Global. Application_Start方法后执行。

用于进行App的初始化时,需要进行处理的内容.例:向数据库记录系统初始化的一些信息。
功能与Global.Application_Start类似,差别在于:Global的Start先执行,然后在到该_appStart,值得注意的是在_appStart上下文中可以使用.NET4的dynamic新特性~~在声明中,作为属性、字段、索引器、参数、返回值或类型约束的类型。

_Layout.cshtml:

布局页面即和aspx的母版页相似。

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第2张

创建MVC视图(Razor引擎)

建立一个基于Razor引擎空的MVC 3.0空应用程序

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第3张

选择空项目模板和Razor视图引擎

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第4张

新建一个Controller命名为HomeController

鼠标右击 Controller文件夹

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第5张

输入Controller名称。注意必须以Controller结尾。

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第6张

添加完控制器后默认给出了起Index的方法。。。

此时我们没有创建对该Action对应的View,所以View是红色的。。。运行时界面会报错。。

publicActionResult Index()
{
returnView();
}

我们先让他输出一个字符串到页面。。。

将代码

publicActionResult Index()
{
returnView();
}

修改为

publicstringIndex()
{
return"Hello World";
}

运行之后 一个简单的界面就出现了 。。。

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第7张

添加View

此时我们只是单纯的显示了一些字符串而已。但是我们的界面还需要很多元素不仅仅是文字。。

所以我们还是得从View视图下手。。

返回到前面的

publicActionResult Index()
{
returnView();
}

修改前面的代码让Controller的Index返回一个ActionResult

对于ActionResult请参见:我要学ASP.NET MVC 3.0(五): 入手Controller/Action

右击该Action弹出窗体 ---选择添加视图

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第8张

建议不要修改视图名称,后续会慢慢解释

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第9张

此时在View文件夹中会对应Controller生成一个Action对应的View视图

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第10张

在视图里面编写html代码

@{
ViewBag.Title = "主页";
}
<h2><a href="Index">Hello World</a></h2>
运行效果

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第11张

控制器和视图之间传递的数据
很多时候我们要把一些数据传递到界面上来。就像Web的Session
代码如下
publicActionResult Index()
{
ViewData[
"Message"] ="Hello World";
returnView();
}

View修改为

@{
ViewBag.Title = "主页";
}
<h2><a href="Index">@ViewData["Message"]</a></h2>

运行效果还是一样的。。。

ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图第11张

关于TempData 、ViewBag和ViewData

其实我个人觉得他们都是一样的。

如果你使用的TempData 、ViewData用ViewBag的方式调用也是一样的效果

反之亦然。。。

例如:ViewBag.Message和ViewData["Message"]

publicActionResult Index()
{
ViewBag.Message
="Hello World";
//ViewData["Message"] = "Hello World";returnView();
}

View代码不变运行效果一样。。。反复调试效果都是一样的。。

TempData、ViewData和ViewBag异同:

TempData ViewData ViewBag都可以用来保存数据。
它们之间的区别如下:
TempData:保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。
ViewData:生命周期和View相同,仅对当前View有效。
ViewBag:和ViewData生命周期相同,也是对但前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型,属于MVC3里面新增的部分。
总结
刚开始接触也谈不上总结。以后学的差不多了再补回来。。(*^__^*) 嘻嘻
下节预告
新来的Razor
转:记忆逝去的青春http://www.cnblogs.com/lukun/

免责声明:文章转载自《ASP.NET MVC 3.0(六): MVC 3.0创建你的View视图》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Qt学习 QVariant类(转)chrome扩展程序开发之在目标页面运行自己的JS下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Hibernate-入门教程

首先了解hibernate的目录结构 . +lib antlr.jar cglib-full.jar asm.jar asm-attrs.jars commons-collections.jar commons-logging.jar ehcache.jar hibernate3.jar jta....

JSTL 标签库详细介绍资料

前言从jsp 1.1规范开始,jsp就支持在jsp中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了jstl(javaserver pages standard tag library)的诞生。因为工作中需要用到jstl,但网上却苦于找不到有关jstl的中文资料,所以就有了这篇文章。jstl简介jstl是一个不断完善的开放源代码的j...

Java高并发,如何解决,什么方式解决

  对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉, 那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。   为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步    1、同步和异步的区别和联系    所谓同步,可以...

Java Web项目案例之---登录和注册(精华版)

登录和注册(精华版) (一)实现功能 1.使用cookie记录登录成功的用户名,用户选择记住用户名,则用户再次登录时用户名自动显示 2.实现文件上传功能(上传文件的表单上传于普通的表单上传不同,必须是post,必须有value,enctype必须是multipart/form-data) 3.图片上传后的名称不能重复,使用随机生成的字符串(UUID) 4....

.Net基础:ASP.NET中的session存储模式运用

在asp.net中的Session存储方式不象asp那样单一,一共提供了三种存储方式,由于最近一个2000多人使用的web软件出现了故障, 用户每天早上在某一时刻出现难以登陆现象,接着Session丢值出现,只有重启IIS,或机器.这时程序恢复正常了.整天都不会出现同样的问题 ,但是第二天依旧!这种现象持续了好几天,我检查了一下日志文件,高峰每秒访问人数大...

ActiveMQ---知识点整理

本文来自于csdn,文章通过介绍ActiveMQ的安装,使用,搭建等等,简单整理了ActiveMQ。 本文转自:http://www.uml.org.cn/zjjs/201802111.asp 一.背景介绍 1.1 java消息服务: 不同系统之间的信息交换,是我们开发中比较常见的场景,比如系统A要把数据发送给系统B,这个问题我们应该如何去处理? 1999...