静态网页设计实用教程.ppt_第1页
静态网页设计实用教程.ppt_第2页
静态网页设计实用教程.ppt_第3页
静态网页设计实用教程.ppt_第4页
静态网页设计实用教程.ppt_第5页
已阅读5页,还剩255页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

静态网页设计实用教程,教学内容,学习情境一:搭建开发环境学习情境二:系统对象与状态管理学习情境三:站点导航控件与母版页学习情境四:搭建系统框架学习情境五:数据绑定与显示学习情境六:数据录入与验证学习情境七:数据更新于编辑学习情境八:常用第三方工具与控件学习情境九:用户控件与HTTPHANDLER学习情境十:网站部署与定制,学习情境一,搭建开发环境,课程地位,就业技能结构图,本门课程目标,学完本门课程后,你能够:熟练使用VisualStudio开发环境开发ASP.NET应用程序完成常见的数据操作任务运用ASP.NET开发商业站点,课程项目展示,网上书店演示,图书列表,数字水印,课程项目展示,RSS发布新书列表,预习检查,创建ASP.NET页面时,自动生成了哪几个文件?使用ASP.NET做开发,是否一定要安装IIS?,本章任务,初识ASP.NET制作第一个ASP.NET页面显示学员信息列表,本章目标,掌握简单ASP.NET程序的开发步骤掌握ASP.NET控件+事件的开发方式会使用Label、TextBox、Button等简单的控件,B/S概念回顾,B/S与C/S相比各有何优缺点?B/S的典型应用场景有哪些?,ASP.NET的特色与优势4-1,与浏览器无关方便设置断点,易于调试编译后执行,运行效率高丰富的控件库代码后置,逻辑分明,ASP.NET的特色与优势4-2,编译后执行,运行效率高,_,代码,编译,Microsoft中间语言(MSIL或IL),JIT编译器,机器语言,分别编译IL的每一部分,ASP.NET的特色与优势4-3,丰富的控件库内置80多种控件统计表明,采用新控件方式的编码,至少比早期减少70%的代码量,使用纯JavaScript脚本方式编写树形目录需要大量编码而使用TreeView导航控件,无需编写一行代码即可完成,ASP.NET的特色与优势4-4,代码后置,将业务逻辑代码与显示逻辑分开,ASPX页面,页面显示.aspx页面,业务逻辑.cs文件,程序员,页面设计人员,成功案例5-1,因为ASP.NET具有诸多优势,越来越多的企业开始采用ASP.NET技术构建它们的网络应用系统。戴尔电脑当当书店中华英才网微软官方网站.,ASP.NET成功案例5-2,戴尔公司官方网站网站是戴尔电脑直销的最主要渠道之一每天有上千订单通过戴尔网站提交和处理,ASP.NET成功案例5-3,当当网全球最大的中文网上书店提供近百万种商品的在线销售,ASP.NET成功案例5-4,中华英才网网站日均浏览量超过1900万拥有超过1360万个人注册用户拥有超过1250万份有效简历累计超过140万家企业注册会员每天提供超过160万个有效职位,ASP.NET成功案例5-5,微软公司官方网站,小结,列举2-3条ASP.NET的特色和优势。为什么说ASP.NET应用程序运行效率高?,搭建开发环境,安装IIS并配置虚拟目录IIS是基于Windows系统的Web服务器的ASP.NET应用程序的发布是基于IIS服务器的IIS类似JSP中使用的Tomcat,提供了更为强大的功能,视频:IIS安装和配置视频,注意事项,单击“添加/删除Windows组件”,确保“应用程序服务器”处于选中状态,开发服务器,在VS中,内置了轻量级的Web服务器Cassini无须配置IIS、设置相应权限,Cassini运行时在状态栏的显示,可以查看开发服务器的状态信息,第一个ASP.NET应用程序,时间提示页面在VisualStudio中新建一个网站设置站点位置拖入相关控件编写事件处理方法查看运行效果,演示示例:第一个ASP.NET应用程序,项目位置设置,新建网站时,可选择项目的位置,有多种选择,点击浏览可以更改项目位置,可视化的设计,双击Botton控件,到代码页,可以编写代码,与WinForms编程类似,点击“源”可看到HTML视图,与WinForms一样简单的控件+事件方式,基于控件+事件的编程,protectedvoidbtnOK_Click(objectsender,EventArgse)stringgreeting;switch(DateTime.Now.Hour).case12:greeting=嘿,0同学,吃中午饭了!;break;.stringmessage=string.Format(greeting,txtName.Text.Trim();lblMessage.Text=message;,Botton单击事件方法,通过Text属性直接获取控件值,无须像jsp中使用Get、Post等方式,查看解决方案组成,这是我们刚才页面的解决方案组成,存放数据的文件夹,自动创建的窗体文件,代码后置文件,站点配置文件,ASP.NET中,HTML代码和C#代码分别存储于不同的文件中,称作代码后置,编码方式,ASP.NET有两种编码方式:代码内嵌和代码后置代码内嵌,HTML代码和C#代码交叉使用。,演示示例:代码内嵌展示,内嵌方式只有.aspx文件,体会ASP.NET的开发过程,显示学员信息创建ShowStudents.aspx页面。将学员信息表拖入页面设置显示字段和标头设置自动套用格式添加分页功能,设置每页显示10条信息,演示示例2:学员信息列表,关键步骤:将表拖入页面,拖入表时,自动出现相关信息,使用服务器资源管理器,打开学员信息数据库,将Student表拖入页面的设计窗口内,关键步骤:设置字段和标题,设置Columns,可编辑显示字段,HeaderText设置列标题显示的内容,关键步骤:套用风格,选择自动套用格式,多种格式可选,关键步骤:设置分页,AllowPaging置为True打开分页功能,PageSize属性设置每页的显示数目,小结,在后置代码中获取用户在TextBox中输入的内容,使用的是哪个属性?什么是代码后置?设置每页显示的条数,使用了哪个属性?,总结,ASP.NET的优势有哪些?画图描述ASP.NET工作原理。建立一个ASP.NET工程有哪些步骤?ASP.NET代码开发有哪两种模式?,学习情境二,系统对象与状态管理,回顾,什么是代码后置?JSP中状态保持有哪几种方式?JSP中Session的写法,预习检查,Session有什么用处?.aspx页面继承自哪个类?,本章任务,实现用户登录功能实现对用户浏览器的判断实现页面数据的传递,本章目标,掌握页面间的数据传递技术能用Session对象记录用户登录状态等信息能使用Server对象查看客户端浏览器类型会使用Response对象和Request对象控制页面的输入输出,运行机制,回顾JSP的运行机制客户端请求后台处理(类Servlet)返回客户端(HTML)ASP.NET的运行机制是什么呢?,ASP.NET运行机制,.aspx文件,后台编码类,ASP.NET引擎,页面类,现象:第一次获取网页较慢,第二次获取较快,系统对象,JSP和ASP.NET中的常见系统对象对比。,注意:JSP和ASP.NET中对象的大小写不同,Page对象,每个.aspx文件对应一个Page对象.aspx与后台代码类(局部类)合并生成页面类Page对象是页面类的实例所有的.aspx文件(Web窗体页)都继承自System.Web.UI.Page类,演示:新建页面,查看源视图,Page指令,指明页面代码和后置代码所使用的脚本语言,设置是否自动调用网页事件,默认为true,指定代码后置文件,该文件包含此页面的局部类,代码后置的类,局部类,Page指令定义了ASP.NET页用于编译和解析的属性。每个aspx页面只能有一个Page指令,页面输入输出控制,Request对象获得页面输入URL传参Form表单提交Response对象在页面输出要显示的内容重定向,Request对象,结合JSP,列举页面间传递数据的几种方式?如何获取传递过来的数据呢?,Request对象,ServerVariables属性,Form属性,Params属性,QueryString属性,获取通过URL路径传来的数据,获取通过表单提交传输的数据,获取Web服务器变量的集合,以上三种方式传输的内容都可以使用该属性获取,Response对象,Response对象允许开发人员对当前页面的输出流进行操作,Response.对象,Redirect方法,Write方法,Response.Write(Hello,ACCP);,直接在页面上输出内容,重定向到另外一个页面,Response.Redirect();,综合示例,获取并打印浏览器的信息输出浏览器类型(IE/FireFox)输出相关版本信息输出客户端语言信息,Request.ServerVariablesHTTP_USER_AGENT;/获取浏览器及版本Request.ServerVariablesHTTP_ACCEPT_LANGUAGE;/获取浏览器语言,演示示例5:获取并打印浏览器信息,数据传递,JSP页面中,如何获取用户输入的信息?分两个页面进行处理,用户输入页面是一页,处理用户输入的又是另一个页面。提交给同一页面,通过特殊参数判断是回传的数据通过Get、Post方式或者URL传递需要发送服务器的数据,页内数据传递,回发,ASP.NETWeb页面,控件1,控件1,用户页面操作,Page.IsPostBack属性,回传,首次加载,true,false,如何判断回发和首次加载?,演示示例1:查询演示,关键代码:验证回传,IsPostBack常放置于Page_Load方法中用于首次加载页面时的初始化,protectedvoidPage_Load(objectsender,EventArgse)if(Page.IsPostBack).,跨页数据传递,ASP.NETWeb页面1,ASP.NETWeb页面2,控件1,控件2,跨页传递,如何知道跨页发送并获取传过来的数据?,跨页数据传递,IsCrossPagePostBack,指示跨页回发是否包含该页PreviousPage,获取向当前页面传输数据的页面,PreviousPage属性,页面2,FindControl方法,找到页面1的对象,根据控件名,获得控件对象,演示示例2:跨页数据传递,关键代码,发出提交的页面获取内容的页面,if(Page.PreviousPage!=null)if(PreviousPage.IsCrossPagePostBack=true)this.lblShowURL.Text=您的查询条件为:+(TextBox)this.PreviousPage.FindControl(txtKeyWord).Text;,通过PostBackUrl指定获取页,获取控件值,判断该页面的是否为其他页回传,小结,绘图描述ASP.NET中页面的编译过程。.aspx文件都继承自哪个类?ASP.NET2.0中,.aspx的类与对应的代码后置的类是什么关系?ASP.NET中,页内数据传递使用哪个属性判断回传或者首次加载?,状态管理,JSP中状态保持有哪几种方式?session、cookie等ASP.NET中状态保持,ASP.NET状态保持,Session,Cookie,Application,存储于服务器,存储于客户端,应用程序级别的状态保持,Session,Session用于什么场合?结合JSP中学过的知识,我们知道Session保持当前用户状态信息常用于用户登录、购物车等,Session示例,第三波网上书店用户登录。用户输入用户名和密码检测用户名和密码是否输入合法登录成功时,在Session中保存用户对象。,演示示例3:第三波网上书店的登录,关键代码,登录代码索引器使用索引器,可以像数组一样处理Session对象,Useruser=newUser();user.Id=0;user.UserName=txtloginId.Text;user.PassWord=txtLoginPwd.Text;SessionUser=user;,Session的名称,要存储的对象,JSP中session.setAttribute(username,username),Cookie演示,Cookie方式记录用户最后登录时间当用户登录时,记录用户的登录时间用户下次登录时,显示用户上次登录时间,演示示例4:增加Cookie的书店登录,关键代码,写入Cookie代码读取Cookie代码,HttpCookiehcCookie=newHttpCookie(UserName,“张三);Response.Cookies.Add(hcCookie);,stringUserName=Request.CookiesUserName.Value;,添加新的Cookie,Application对象,Application对象可以存储应用程序级的数据。“Application”:应用程序第一个用户访问站点时,应用程序启动,并创建一个Application对象。创建成功后,整个应用程序中都可以使用该对象。除非应用程序关闭,否则对象一直存储在内存中。,Application对象对应HttpApplication类,它定义ASP.NET应用程序中的所有应用程序对象通用的方法、属性和事件。,小结,请分别书写Session方式和Cookie方式保存用户登录状态的代码。保存当前用户登录时间保存登录用户名编写读取Cookie中内容的代码,Server对象,Server对象是HttpServerUtility的一个实例,它提供对服务器上的方法和属性的访问。,Server对象,HtmlEncode方法和HtmlDecode方法,Execute方法和Transfer方法,UrlEncode方法和UrlDecode方法,MapPath方法,取得文件的物理路径,执行另一个页面的脚本,将文本编码成可以在浏览器中可正确浏览的格式,URL编码和解码,类似与JSP中的URLEncoder.encode,综合示例,修改欢迎页当用户未登录时转到登录页面登录成功后转回欢迎页在欢迎页面显示用户的信息根据用户浏览器的语言,给予不同语言的欢迎辞(如:中文用“您好,!”,其他用“HELLO,.!”。),演示示例6:新的欢迎页面,总结,如果要显示在线人数,想想怎么做?提示:在每次用户请求时记录人数,保存在什么位置比较合适?简述ASP.NET中状态保持的三种方式,并说明适用范围?,学习情境四,搭建系统框架,回顾2-1,三层结构都有哪三层?上一章里我们学习了哪三种导航控件?,回顾2-2,stringsql=SELECTSubjectNameFROMSubject;SqlCommandcommand=newSqlCommand(sql,DBHelper.connection);DBHelper.connection.Open();SqlDataReaderdataReader=command.ExecuteReader();while(dataReader.Read()cboSubject.Items.Add(dataReaderSubjectName.ToString();,未关闭ReaderdataReader.Close();,未关闭连接DBHelper.connection.Close();DBHelper.connection.Dispose();,预习检查,模型层有哪些内容?数据访问层一般写哪些方法?,本章任务,搭建网上书店的架构实现书店的用户登录,本章目标,会在ASP.NET中使用三层结构。能够实现三层结构下的用户注册和登录。,系统架构,三层结构表示层业务逻辑层数据访问层,分层的理念:将相似的内容放到一起去处理,开发人员可以只关注整个结构中的其中某一层,可以很容易的用新的实现来替换原有层次的实现,三层结构的经典案例:PetShop,PetShop4.0,宠物商店微软展示.NET企业开发的范例。与Sun的PetStore的商业竞争。一个小型的电子商务案例。体现了微软推广的开发思想和设计理念。分22个项目,经典的系统,从设计的思想到最好的编码,学习参考价值很高。,演示:PetShop4.0,PetShop4.0架构简介,ASP.NETWeb,BLL,DALFactory,OracleDAL,SQLServerDAL,IDAL,Model,表示层,业务层,数据层,典型的三层结构,搭建第三波网络书店的模型层,模型层表示层需要访问实体对象的属性值。业务层需要通过实体对象处理业务逻辑。数据层也需要通过实体对象读写数据库。模型是数据载体。命名项目名:MyBookShopModels命名空间:MyBookShop.Models类名:图书表Books图书类Book实体类通常冠以Serializable特性,以保证实体传输的可靠性,外键的处理,数据库中有主外键关系,模型层怎么表示?比如用户表和状态表。状态字段是用户表的外键。两种方式:为实体类添加状态id属性,存储状态id。为实体类添加状态属性,存储状态对象。,示例,用户类的模型用户需要有登录名、密码、状态等属性状态表存储状态名称用户的状态属性使用状态对象,publicUserStateUserStategetreturnthis.userState;setthis.userState=value;,处理外键的代码,Serializable()publicclassUser/字段publicUser()/构造函数/常见属性publicUserStateUserState/用户状态-外键getreturnthis.userState;setthis.userState=value;,小结,编写实体类UserRole并更新User类相关属性类关系图如下,答案:UserRole类,数据访问层,数据访问层所有与数据库交互的操作数据表的增、删、查、改操作数据访问层不做逻辑判断命名项目名:MyBookShopDAL命名空间:MyBookShop.DAL类名:图书表Books图书数据访问类BookService,代码比较,比较两段代码代码1代码2在每一个对象的数据库访问类中:数据库连接反复出现数据库连接打开和关闭反复出现执行Sql语句的方法相似返回记录集的方法相似,根据面向对象思想,是否可以减少这些重复劳动?,DBHelper类,我们将常用方法提取出来,作为DBHelper类该类包含了:,建立数据库连接,执行Sql的方法(存储过程sql语句),返回记录集,返回Reader,返回结果,创建数据访问层的类,创建UserService类Create方法Retrieve方法Update方法Delete方法,boolAddUser(Useruser),IListGetAllUsers()UserGetUserById(intid)IListGetUsersBySql(stringsql),boolDeleteUserById(intid),boolUpdateUser(Useruser),增加一个用户的方法,publicstaticboolAddUser(Useruser)stringsql=INSERTUSERS(loginid,loginpwd,name,address,phone,mail,userroleId,UserStateId)+VALUES(LoginId,LoginPwd,Name,Address,Phone,Mail,RoleId,UserStateId);SqlParameterpara=newSqlParameternewSqlParameter(LoginId,user.LoginId),;DBHelper.ExecuteCommand(sql,para);returntrue;,组合SQL语句,参数赋值,调用DBHelper类中的方法进行处理,小结,模型层为什么要标记为可序列化?模型层的作用?数据访问层的功能?编写User的数据访问类的查、改、删方法。,示例:User的数据库访问类,业务逻辑层,业务逻辑层是表示层与数据访问层的桥梁,负责逻辑的判断,业务处理、数据传递。不在表示层访问数据库,数据更加安全。命名项目名:MyBookShopBLL命名空间:MyBookShop.BLL类名:图书表Books图书业务逻辑层类BookManager,用户登录的业务逻辑方法,publicstaticboolLogin(stringloginId,stringloginPwd,outUservalidUser)Useruser=UserService.GetUserByLoginId(loginId);if(user=null)validUser=null;returnfalse;if(user.LoginPwd=loginPwd)validUser=user;returntrue;elsevalidUser=null;/密码错误returnfalse;,表示层,表示层的设计给客户最直接的体验。页面风格和布局,美观大方。页面操作符合逻辑,讲究用户体验。注意风格统一。,表示层负责内容的展现和与用户的交互。可以进行变量范围的验证。不做业务逻辑判断。不做与数据库交互的处理。,用户管理模块,首先根据数据库创建模型层。包括用户的实体类以及相关联的类。创建数据访问层用户管理类。包括增删查改方法。设计相关页面,并编写事件代码。新用户注册。用户登录。用户信息修改。创建业务逻辑层处理类。根据需要,添加相关方法。,示例1,用户登录创建页面。编写事件处理代码,包括验证输入。创建业务逻辑层方法,调用数据访问层相关方法处理。,演示示例:用户登录,用户注册的确认事件代码,Useruser=newUser();user.LoginId=this.txtLoginId.Text;user.UserState=newUserState();user.UserState.Id=1;if(UserManager.AddUser(user)this.ltMain.Text=alert(注册成功!请继续购物);window.location=./default.aspx;elsethis.ltMain.Text=alert(用户名已使用!请重新选择!);,实例化User类,对类相关属性进行赋值,默认值,硬编码,业务层进行相关判断和处理,弹出脚本提示小技巧:在控件上输出脚本,小结,编写图书模块相关实体类和数据层、业务层的类。图书有id、作者、标题、分类、出版社、描述、ISBN(简化)。出版社有id、名称。分类有id、名称。编写图书、出版社、分类的实体类。编写图书的数据层增删查改方法。编写图书业务层的查询所有的方法。,演示示例:图书模块相关类,总结,数据访问层常见的方法有哪几种?页面要显示一个表的内容,可否直接使用ADO.NET连接数据库,为什么?业务逻辑层的方法来自哪部分的需求?,学习情境五,数据绑定与显示,回顾2-1,TreeView控件绑定数据的方式是什么?指定DataSourceID数据访问层有哪四类常见方法?C、R、U、D在ASP.NET中调用客户端脚本,有哪几种方法?注册客户端脚本页面输出脚本控件的Text中输出脚本,下面是注册用户的部分代码,检查有什么问题。,回顾2-2,Useruser=newUser();user.LoginId=this.txtLoginId.Text;user.LoginPwd=this.txtLoginPwd.Text;if(UserManager.LoginIdExists(user.LoginId)this.Page.ClientScript.RegisterStartupScript(this.GetType(),alert(用户名或者密码错误!););UserManager.AddUser(user);,此处应该使用单引号,预习检查,GridView控件有哪两种数据绑定方式?有哪几种数据源控件?,本章任务,完成书籍分类维护模块图书列表分页可多选,实现多个图书分类的调整高亮显示鼠标所在行(光棒效果)图书详细显示页面,本章目标,能熟练使用GridView进行数据的查询与展示熟练使用ObjectDataSource控件绑定业务逻辑层返回的对象,数据展示,数据展示的两种实现方法,使用数据源控件,可以实现快速开发,手写代码实现,简单设置实现,数据源控件,Web服务器,数据库,展示数据,什么是数据源控件?,数据源控件,快速实现多种常用的数据源进行展示和交互快速完成对数据表增删改查操作是ASP.NET2.0引入的一个新的数据抽象层,学习过的数据源控件,“面包屑”导航控件使用的SiteMapDataSource,TreeView导航控件使用的XmlDataSource,数据源控件,VS2005内置的五种数据源控件SqlDataSourceAccessDataSourceObjectDataSourceXmlDataSourceSiteMapDataSource,SqlDataSource允许访问支持ADO.NET数据提供程序的所有数据源。可访问ODBC、SQLServer等,ObjectDataSource可以对业务对象或其他返回数据的类执行特定的数据访问,XmlDataSource可以对XML文档执行特定访问,包括物理访问和内存访问。,SiteMapDataSource可以对站点地图提供程序所存储的Web站点执行特定的站点地图数据访问,数据源控件,数据源控件类的层次结构图:,Control类,普通数据源控件,层次化数据源控件,ObjectDataSource,SqlDataSource,SiteMapDataSource,XMLDataSource,AccessDataSource,所有数据源控件都派生于Control类,ObjectDataSource重要属性,手写代码方式,this.gvMain.DataSource=UserManager.GetAllUsers();this.gvMain.DataBind();,获取数据的方法,展示数据的控件,指定数据集合,数据绑定方法,注意:数据源控件方式只要指定数据源id即可;DataSource方式在指定完数据源后必须使用绑定方法。,数据绑定控件,数据绑定控件可以用来展示和绑定数据数据源控件不提供展示,数据绑定控件提供展示数据绑定控件可以通过数据源控件绑定数据数据绑定控件的层次结构,小结,三层结构下,采用哪个数据源控件比较合适?说明五种数据源控件各自的作用。,图书分类管理,第三波网络书店的图书分类管理,图书列表显示,显示标题和分类,分页,详情,多选效果,光棒效果,分类修改功能,数据展示,JSP中如何显示列表信息?读取数据循环记录集,组合HTML代码(使用标签库或者硬编码).NET中的数据绑定控件能够将控件绑定到一个数据结果集能够使用模板自定义控件的布局和样式提供用于处理和取消事件的方便模型,GridView控件,使用GridView显示图书信息列表1、将GridView控件拖入页面。2、添加并指定ObjectDataSource数据源。3、编辑列,选择需要显示的字段,并可设置表头等。4、设置分页。5、运行,查看效果。,演示示例:图书列表,绑定列,BoundField字段表示数据绑定控件中作为文本显示的字段。可设置表头、样式等信息。DataFormatString,可设置显示字段的格式。,注:当HtmlCode属性设置为false,DataFormatString才有效,0:C,0代表对应后面的第一个参数,这里就是绑定的字段所对应的值;C是格式化标记,它可以将数字型的字段格式化为货币类型。,绑定列,TemplateField字段绑定中显示自定义内容的字段有五种模板(标头、脚注、普通项、交替项、编辑模式),绑定字段的方法,还可以使用Eval,注意单引号的使用,Eval和Bind,Eval方法是只读方法该方法采用数据字段的值作为参数并将其作为字符串返回。当对表达式操作时候,必须用Eval如格式化Bind方法支持读/写功能可以检索数据绑定控件的值并将任何更改提交回数据库。,d:日期;m:月份;y:年份。可能格式化为“17/05/2008”。,绑定列,ButtonField字段显示为数据绑定控件中的按钮CommandName设置自定义命令(RowCommand),protectedvoidgvBooks_RowCommand()if(e.CommandName=Select)intindex=Convert.ToInt32(e.CommandArgument);GridViewRowselectedRow=gvUser.Rowsindex;TableCellcontactName=selectedRow.Cells1;,绑定列,CommandField一个特殊字段,显示了用于在数据绑定控件中执行选择、编辑、插入或删除操作的命令按钮自动生成命令,无须手写对应数据源的增改查删方法HyperLinkField显示为超链接的字段比如链接到详细页面,设置链接的路径格式,设定绑定的参数集合,绑定列,ImageField字段为图像的字段绑定到包含图像URL的数据源中的字段指定DataImageUrlFieldCheckBoxField字段以复选框显示的布尔型字段仅当数据源字段中有布尔型字段时使用此字段,光棒效果,protectedvoidgvDemo_RowDataBound(objectsender,GridViewRowEventArgse)if(e.Row.RowType=DataControlRowType.DataRow)e.Row.Attributes.Add(onmouseover,currentcolor=this.style.backgroundColor;this.style.backgroundColor=#6699ff);e.Row.Attributes.Add(onmouseout,this.style.backgroundColor=currentcolor);,GridView数据行绑定事件,判断数据行类型,当鼠标离开时数据行背景色还原,添加属性(客户端):当鼠标移过的时,数据行背景色变成蓝色,多选效果,functionGetAllCheckBox(CheckAll)varitems=document.getElementsByTagName(input);for(i=0;iitems.length;i+)if(itemsi.type=checkbox)itemsi.checked=CheckAll.checked;,获得页面上标签为Input的控件元素,判断控件元素类型是否为复选框,图书分类管理,完成图书分类管理模块的功能在页面相应位置放置下拉单(DropDownList)设置下拉单的数据源,并配置相关属性绑定数据源,使用ObjectDataSource控件设置需要显示的字段(DataTextField属性)设置值字段(DataValueField属性)放置“修改”按钮,并编写单击事件的代码,参考答案:图书分类管理,关键代码,stringsb=String.Empty;for(inti=0;ithis.gvBooks.Rows.Count;i+)CheckBoxcb=(gvBooks.Rowsi.FindControl(chbSelect)asCheckBox;if(cb.Checked=true)sb+=(gvBooks.Rowsi.FindControl(lblId)asLabel).Text+,;stringcatagory=this.ddlCatagory.SelectedItem.Value;ChangeCatagory(sb,catagory);/实现更新图书分类的方法,遍历行,找到选中的项,获得下拉单选中行的值,详细页面,配合图书列表中的链接项,完成图书的详细页面,显示几个常用的字段,DetailsView控件,使用DetailsView控件完成图书详细信息的显示配置数据源定义数据方法-GetBookById(Int32id)设置参数获取方法,通过参数获取指定DetailsView的数据源为该数据源,演示示例:图书的详细页面,小结,默写实现全选效果的javascript脚本思路:获得参数(多选框对象)得到页面上所有的INPUT标签的集合遍历该集合并将符合条件的对象选中状态改为参数的选中状态,总结,数据源控件有哪几个?可否使用ObjectDataSource绑定数据访问层返回的DataSet?为什么?为绑定的行添加脚本事件的方法是什么?DropDownList控件的哪个属性可获取当前选择的项?,学习情境六,数据录入与验证,回顾2-1,数据展示有哪两种方式?手写绑定绑定数据源控件Eval和Bind的区别?Eval方法是静态(只读)方法,格式化显示,计算列等。Bind方法支持读/写功能,可修改回传服务器。,下面是改变图书分类的部分代码,有什么问题?,回顾2-2,stringsb=String.Empty;for(inti=0;i,标签:可以放置任意数量的代码在其中,但并不能直接输出到模版中。,标签:在模版中输出一个字符串,CodeSmith模板进阶,生成实体类的需求类名:如果表名后面有“s”(如Books),则类名=表名-“s”;否则类名=表名。字段:首字母小写,并依据相应数据库中的类型设置字段类型和默认值。外键:外键字段名=外键对象名+“Id”,usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceMyBookShop.ModelsSerializable()publicclassBookprivateintid;privatestringtitle=String.Empty;privatestringauthor=String.Empty;privatePublisherpublisher;privateCategorycategory;,数据库访问组件,组件的引用组件的使用ForeignKeyColumns:所有外键列的集合NonForeignKeyColumns:所有非外键列的集合NonKeyColumns:所有既不是主键又不是外键的列的集合,TableSchema/表的类型ColumnSchema/列的类型,编写仅包含字段的实体类模板,编写模板设置参数为数据表添加模板代码和方法,publicstringGetColumnName(ColumnSchemacolumn)if(column.IsForeignKeyMember)returncolumn.Name.Substring(0,column.Name.Length-2);returncolumn.Name;,针对外键,去掉末尾的“Id”,演示:MyField,设置参数为表格类型,文件名,控制生成的文件名我们的实体类都是以类名.cs作为文件名,要达到这个目的,可以通过重载GetFileName方法实现代码,publicoverridestringGetFileName()returnGetClassName(this.SourceTable)+.cs;,如果不重写该方法,则保存时的文件名以模板名称作为默认文件名,以TargetLanguage指定的类型确定后缀名,综合示例最终的实体类模板,在生成字段的基础上,添加属性的生成。重载GetFileName方法,使默认保存的文件名为“类名.cs”。,演示:MyObject,小结,只能使用C#语法编写模板么?参数声明时,哪个属性标记参数的类型?访问数据库的表,需要引用哪个组件?,总结,验证码有哪几种实现方式?CodeSmith代码生成的核心思想是什么?在生成实体类的模板中,外键的处理应用了我们的哪个规则?编写CodeSmith的模板之前,需要考虑清楚哪三部分内容?,学习情境九,用户控件与HttpHandler,回顾2-1,简述在已有模板情况下,使用CodeSmith生成代码步骤启动CodeSmithExplorer选择模板输入属性值生成代码,下面是CodeSmith模板中生成文件名的方法,有什么问题?,回顾2-2,publicstringGetFileName()returnthis.SourceTable+.cs;,override,SourceTable是对象,应该使用SourceTable.Name,预习检查,什么是用户控件?什么是数字水印?,本章任务,使用用户控件开发用户登录为图书封面添加数字水印,本章目标,能使用用户控件简化复杂开发能利用HttpHandler显示图片数字水印,用户控件,用户控件可以实现页面代码的重用,搜狐首页,搜狐新闻页,用户控件,用户控件是一种自定义的组合控件封装独立的功能(显示列表等)像页面一样方便的编辑,像控件一样使用拖拽方式使用后缀名为.ascx作用页面代码的重用,母版页提供整个页面级的风格控制和代码重用;用户控件提供小范围的风格控制和更灵活的代码重用,创建用户控件,将用户登录的部分放入用户控件新建用户控件在用户控件上放置相关的Web控件编写用户控件的后台代码在其他页面使用用户控件,演示示例:登录的用户控件,创建用户控件,Control指令后台代码,类似于Page指令,publicpartialclass_Controls_UserLoginControl:System.Web.UI.UserControlprotectedvoidPage_Load(objectsender,EventArgse).,也有Page_Load事件,使用用户控件,页面中注册和使用,在页面中注册控件,将用户控件放入页面指定位置即可,注意事项,用户控件中可以使用其他用户控件可以像页面一样,在用户控件中使用其他用户控件但用户控件中不可包含自己,也不能发生任何循环嵌套,用户控件1,用户控件2,用户控件1,用户控件与Page,用户控件与页面的区别?后缀名:用户控件以.ascx为后缀名,而页面后缀名是.aspx指令:用户控件为Control,页面是Page继承:用户控件继承自System.Web.UI.UserControl,而页面继承自System.Web.UI.Page用户控件不可直接访问,页面可直接访问,页面:容器;用户控件:内容。,小结,可否在用户控件中访问外部页面的控件?为什么?用户控件编码使用哪个标记?用户控件和母版页分别在哪种情况下使用?,数字水印,在图片上增加站点标识,能够很好地保护著作权,防止他人盗用图片。,数字水印的实现,资源准备水印图片默认图片,采用图片形式的水印,需要一个水印图片。,当图片封面图片不存在时,显示该图片,此时就不需要在图片上绘制水印。,数字水印的实现,实现方式分析直接编辑每张图片编程实现批量编辑图片在显示图片时,动态添加数字水印效果,需要大量的人力。,节省人力,效率高,但原始图片丢失了。,使用HttpHandler,HttpModule和HttpHandler,HttpHandler处理程序,Http运行时,Http模块,Http模块,Http模块,Http请求,响应,请求的终点最终的处理,可能经历多个模块,层次“过滤”,原路返回,HttpHandler的使用,创建HttpHandler程序添加新项选择“一般处理程序”查看运行结果,演示:创建HttpHandler程序,关键代码,usingSystem;usingSystem.Web;publicclassHandler:IHttpHandlerpublicvoidProcessRequest(HttpContextcontext)context.Response.ContentType=text/plain;context.Response.Write(HelloWorld);publicboolIsReusablegetreturnfalse;,实现IsReusable属性,实现IHttpHandler接口,实现ProcessRequest方法,ProcessRequest是HTTP请求的最终处理,HttpContext对象,提供对用于为HTTP请求提供服务的内部服务器对象(如Request、Response、Session和Server)的引用。,指定Handler方式实现数字水印,.ashx文件的方式实现数字水印思路分析获得URL传的参数ISBN;根据ISBN查找相对应的封面图片;将数字水印图片“粘贴”在封面图片的右下角;修改程序的输出类型,并将组合出的新图片输出。修改页面中访问该图片的路径。,指定Handler方式实现数字水印,动态输出图片创建HttpHandler程序编写处理代码修改图书列表页面的封面路径查看效果,演示示例:动态处理输出图片,关键代码,程序输出图片代码代码,.publicclassBookCover:IHttpHandlerpublicvoidProcessRequest(HttpContextcontext).context.Response.ContentType=image/jpeg;Cover.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);Cover.Dispose();context.Response.End();.,设置输出格式输出图片文件,将图片保存在输出流,全局Handler方式实现数字水印,使用.ashx方式,需要修改所有访问封面图片的路径,太麻烦。能否直接访问图片,达到添加数字水印的效果?,文件夹中的封面原图,通过站点访问该文件就显示水印效果,全局Handler方式实现数字水印,实现思路分析修改配置信息,将所有对.JPG内容的访问转到HttpHandler处理程序获得访问请求,得到用户访问的图片路径;根据请求的路径,查找相对应的封面图片;将数字水印图片“粘贴”在封面图片的右下角;修改程序的输出类型,并将组合出的新图片输出。,全局Handler方式实现数字水印,实现数字水印:web.config中注册类,设置路径编写实现接口的类使用开发服务器访问图书封面图片,演示示例:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论