欢迎来到天天文库
浏览记录
ID:46282495
大小:1.76 MB
页数:42页
时间:2019-11-22
《第+18+章+ASP.NET+MVC+基础(二)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五篇ASP.NET高级编程东鹏电子信息有限公司2内容第15章图形图像编程第16章ASP.NET和AJAX第17章ASP.NETMVC基础(一)第18章ASP.NETMVC基础(二)第19章ASP.NETMVC基础(三)第18章ASP.NETMVC基础(二)主讲:Jayce_Zou第四部分了解视图、视图数据和HTMLHelper主讲:Jayce_Zou创建视图:请注意,不能像在ASP.NET应用程序中添加页面一样在项目中随意添加视图。必须将视图添加到与控制器名称相同(不带Controller前缀)的文件夹中。例如,如果想创建名称为Index的新
2、视图,并且它能够由名称为ProductController的控制器返回,则必须将视图添加到项目的以下文件夹中:ViewsProductIndex.aspx包含视图的文件夹的名称必须与返回视图的控制器的名称对应。什么是View层主讲:Jayce_ZouViewDataDictionary类它是View层的核心,它主要是接受用户的请求之后,根据请求把查询到的结果生成Html。请求的数据一般是来自Model层的数据类实体。View层的工作方式,是把数据格式化之后,作为容器,在控制器Controller和视图View之间传递数据。在没有强名称的支
3、持下,View层只是个简单的字典对象,即ViewDataDictionary类。View的常用样式主讲:Jayce_Zou主讲:Jayce_Zou上图可以看出,View的样式很像WebForm,但是它们也是有区别的:第一:View页面是继承自System.Web.Mvc,而WebForm是继承自System.Web.Form。第二:View显示数据的方式使用ViewData显示。而且View模式的后面表示要调用的MVCView的实体。第三:View没有formrunat=server的标记。如果是要在View页面硬要加这个标记,调用服务器控件,
4、编译可以通过,但是不一定能运行,因为它没有ViewState和Postback。ViewState是Control的基础,没有ViewState,Control的状态是无法纪录的,服务器跟前台是无法交互的。Postback是Control的灵魂,Control要想和服务器交互,它必须要有一个Postback机制,遗憾的是,由于页面继承自System.Web.Mvc,它都不带这两个功能。主讲:Jayce_Zou另外不推荐在页面写formrunat=server的标记的原因有两个:第一:这样做打破了MVC的架构,MVC架构设计理念就彻底被颠覆了。本
5、来MVC的设计费了千辛万苦通过分文件夹的分层架构,又做路由、又做引擎,目的就是为了把表示层和业务逻辑层彻底分开。可以想象,MVC的逻辑处理全都不能在View下处理,而是在Controller处理。第二:没有ViewState和Postback。View容易混淆的概念主讲:Jayce_ZouView负责输出数据而非样式。View层不管编排代码,只有数据,没有样式。数据就是显示的数据记录跟数据库里的结构是一样的,样式是在这之上加上一些表格标记。千万别在Controller里输出Html样式。尽量不要自己在View里写Html样式,尽量使用MVC自带
6、的Htmlhelper类去完成。View尽量包含尽量少的代码。指定View作为输出主讲:Jayce_ZouAction先去View的Home文件夹找(默认),找不到文件名会继续去Share文件夹里找,如果也找不到文件,就会报错。如果想要转向的View不在Home和Share里,一定要把文件路径和文件的后缀名写清楚。11将数据传递给视图主讲:Jayce_Zou使用视图的ViewData属性,可以将数据从控制器传递给视图。控制器ViewData属性表示成对名称和值的集合。我们利用视图数据将简单的字符串消息从控制器传递到视图。也可以使用视图数据将其他
7、类型的数据(如数据库记录的集合)从控制器传递到视图。例如,如果想在视图中显示Products数据库表的内容,则应该传递视图数据中的数据库记录集合。编辑Controller、View完成一个简单的页面传值主讲:Jayce_ZoupublicActionResultIndex(stringid){ViewData["chsword"]=id;returnView();}<%@PageTitle=""Language="C#“MasterPageFile="~/Views/Shared/Site.Master"Inherits="System.Web
8、.Mvc.ViewPage"%>
此文档下载收益归作者所有