首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网页制作-> DHTML教程
.NET三层经典架构PetShop3.0分析之表现层-.NET教程,.NET Framework
作者:网友供稿 点击:240
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

前面从架构方面介绍了petshop怎样通过工厂模式可以轻松替换持久层实现。这次简单说一说petshop的表现层实现。

       petshop的表现层使用了web 页面(aspx)和用户控件(ascx)控件及自定义服务器控件等asp.net技术。

       web页面(aspx)是用户和服务器交互的接口,也是用户除静态页面外唯一能够访问到的asp.net组件,其他像用户控件(ascx)和服务器控件只能在web页面(aspx)中使用,用户不能直接访问。用户控件类似于web页面,服务器控件与jsp的标签相似,可以在比较中进行学习。

.用户控件和服务器控件。

1.用户控件。

       用户控件与web页面极为相似,只不过是以ascx后缀命名(确保用户控件不能作为独立 web 窗体页来运行),并且不能包含 <html><body> <form> 元素,这些元素必须位于宿主页中。用户控件使您能够很容易地在多个 asp.net web 应用程序之间划分和重复使用公共用户界面 (ui) 功能。asp.net页面中也可以使用include,也就是服务器端包含(ssi),不过用户控件编译后是.net 框架中的usercontrol 类的实例,可以通过编程方式操作用户控件,通过访问由 asp.net 提供的对象模型支持,具有更大的灵活性。

       用户控件使用小结:

  (1)用户控件使开发人员能够使用编写web窗体页的相同编程技巧轻松地定义自定义控件。 作为约定,用.ascx文件扩展名指示这样的控件。这样可以确保用户控件文件不能作为独立的web窗体页执行。

  (2)用户控件通过register指令包括在另一web窗体页中,该指令指定tagprefixtagnamesrc location

  (3)注册了用户控件后,可以像普通的服务器控件那样将用户控件标记放置在web窗体页中(包括runat="server"属性)。在包含web窗体页中将用户控件的公共字段、属性和方法提升为该控件的公共属性(标记属性)和方法。

  (4)用户控件参与每个请求的整个执行生存期,并且可以处理自己的事件,封装来自包含web窗体页的一些页逻辑。

  (5)用户控件不应包含任何窗体控件,而应依靠其包含web窗体页在必要时包括窗体控件。

  (6)可以使用system.web.ui.page类的loadcontrol方法以编程方式创建用户控件。用户控件的类型由asp.net运行库决定,遵循约定文件名_扩展名。

  (7)只有当为用户控件包括了register指令时,用户控件的强类型才能由包含web窗体页使用(即使没有实际声明的用户控件标记)。 

2.服务器控件。

       asp.net服务器控件是一种类似于jsp taglib的编程模型。我们可以通过编程方式创建控件,然后在页面中使用。服务器控件可以提供极为强大的功能。msasp.net提供了三种服务器控件:

       html 服务器控件   对服务器公开的 html 元素,可对其进行编程。html 服务器控件公开一个对象模型,该模型十分紧密地映射到相应控件所呈现的 html 元素。

       web 服务器控件   这些控件比 html 服务器控件具有更多内置功能。web 服务器控件不只包括窗体类型的控件,例如按钮和文本框;而且还包括特殊用途的控件,例如日历。web 服务器控件与 html 服务器控件相比更为抽象,因为其对象模型不一定反映 html 语法。

       验证控件   包含逻辑以允许测试用户输入的控件。将一个验证控件附加到输入控件,测试用户对该输入控件输入的内容。验证控件可用于检查必填字段,对照字符的特定值或模式进行测试,验证某个值是否在限定范围之内以及其他目的。

.net2.0更是大大加强了web服务器控件。另外我们可以创建自定义的服务器控件(由于创建自定义控件相对复杂,并且内容较多,所以以后有时间介绍。),以提供通用控件没有提供的功能。

3.web 用户控件和web 自定义控件的比较:

web 用户控件:

易于创建

为使用可视化设计工具的使用者提供有限的支持

每个应用程序中需要控件的一个单独副本

不能添加到 visual studio 中的工具箱

适用于静态布局

 

web 自定义控件:

难于创建

为使用者提供完全的可视化设计工具支持

仅在全局程序集缓存中需要控件的单个副本

可以添加到 visual studio 中的工具箱

适用于动态布局

 

.petshop的表现层实现简介

1.app_code目录

app_code下包含了用户自定义的服务器组件,用于流程控制的业务逻辑类,和utils类,另外还有页面page和应用application的配置类。

       default.aspx.cs 是一个system.web.ui.page,主要注册了load事件处理器,this.load += new system.eventhandler(this.page_load);好像没有使用,不太清楚。

       global.asax.cs 是一个httpapplication,主要重写了应用出错方法,protected void application_error(object sender, eventargs e),将错误信息记入windows日至。同时通过重载getvarybycustomstritom属性。

       controls目录下包含两个自定义服务器控件,simplepagerviewstatepager,它们都是用于分页的。simplepager继承自repeaterviewstatepager又继承自simplepager,所以他们都是模版可迭代控件。它们通过装饰模式为repeater中的模版添加了分页按钮,并提供事件接口,用户可以注册onpageindexchanged事件处理器,该处理器主要用于绑定数据源。分页控件和我们emed3.0的分页标签不同,它绑定了所有的数据,但只显示特定也的数据。viewstatepager通过viewstate维护分页状态,可以在一个页面中同时存在多个分页控件。

       processflow目录下的类用于控制业务流程。accountcontroller.cs导航和用户帐户有关的事件。通过业务逻辑层(bll)处理用户登录登出,获取用户信息,更新用户信息等逻辑。cartcontroller.cs通过业务逻辑层(bll)处理购物车相关信息的逻辑,比如创建,购买,添加购物,获取或存储订单地址信息等逻辑。

       webcomponents下包含cleanstring.cs utils类,处理传入的字符串数据,保证不会超过maxlength长度,如果传入的是空(nulltrim后是“”),返回“”,其他换码,并将单引号去掉,替换为空格。

2.controls目录

controls目录下存放了用户控件。

       addressui.ascx 封装了用户地址信息的一个table,用于收集和显示地址信息。

       banner.ascx 横幅,封装了页脚。

       navbar.ascx 导航条,其中包含页眉,页眉下的登录,登出,帐户信息和查询栏还有帮助链接。最下面是一个导航菜单,分别导航到不同种类的动物。

       preferences.ascx 封装了用户的喜好特性的信息页面组件。

       其他控件作用相似,都是封装了某一个相对独立的ui界面的一部分。

3.images目录 

       当然是包括了web页面用到的图片。

4.根目录

       根目录下的其他文件是aspx页面和web.config配置文件和styles.css样式文件。

       default.aspx是主页面(index),使用了页的顶部使用navbarnomenu控件和banner控件。,中间是一个表,表左边是连接导航,中间是地图导航。点链接后会导航到category.aspx

       category.aspx 用于显示某一类别的动物的信息。使用了simplepager服务器控件。

       其他还有signin.aspx用户登录,myaccount.aspx用于查看和编辑个人账户信息,search.aspx用于搜索,shoppingcart.aspx显示购物车中的信息等。

 

.petshop的页面布局

       petshop的布局比较简单,是通过组合用户控件实现的。对于default.aspx页的顶部使用navbarnomenu控件,中间通过表table布局,页脚使用banner控件。对于category.aspx页顶部使用navbar控件,主体使用simplepager自定义服务器控件。对于search.asp和其他页面与category.aspx几乎一样。

 

.petshop的页面导航

       在主页面上可以导航到各个类别,导航到各个类别或者某类中的具体动物时,还可以通过navbar,随时导航到各个类别。

       所有存在搜索的页面都是通过navbar.ascx用户控件中的<form id="search" method="get" action="search.aspx">导航的。

       主页面default.aspx通过 href="category.aspx?categoryid=birds"连接将用户导航到具体的物种列表。

       navbar.ascx中,通过<a href="signout.aspx" >,<a href="editaccount.aspx">,<a href="shoppingcart.aspx">,<a href="signin.aspx">分别导航到登出,编辑个人帐户信息,购物

车,和登录页面。

       category.aspx<form id="form" method="post" runat="server">,请求到该页面时simplepager自定义控件会调用category.aspx.csprotected void pagechanged(object sender, datagridpagechangedeventargs e)方法,通过request["categoryid"]获取该类动物的列表。并构造单独动物的链接--<a href=items.aspx?productid=<%# databinder.eval(container.dataitem, "id") %>>,通过动物id,获取动物的详细信息。  

       对于signin.aspx,如果用户没有账号,可以通过<a href="createaccount.aspx">导航到<a href="createaccount.aspx">。用户点击登录按钮会触发signin.aspx.cssubmitclicked()事件处理器方法,该方法通过processflow.accountcontroller 处理登录请求,如果登录成功导航到合适的页面,httpcontext.current.response.redirect(url_accountsignin, true)--主页面或httpcontext.current.response.redirect(formsauthentication.getredirecturl(userid, false), true)--其他页面。

       其他页面的原理差不多,也就是一部分导航是直接通过<a>标签写在页面中,另一部分是通过processflow中的导航逻辑类进行按照逻辑和操作状态导航(利用httpcontext.current.response.redirect)。

 

.petshop的应用和会话状态

       petshop使用基于form的认证模式:

              <authentication mode="forms">

                     <forms name="petshopauth" loginurl="signin.aspx" protection="none" timeout="60"/>

              </authentication>

       其他的location定义了拒绝匿名访问的页面,点击这些页面时,用户如果没有登录系统会首先转到登录页面。

       用户信息和用户的购物信息基本上是通过processflow中的accountcontroller.cscartcontroller.cs实现的。

       用户登录时会调用accountcontroller.cspublic bool processlogin(string userid, string password)方法,登录成功后会通过httpcontext.current.session[account_key] = myaccountinfosession中储存用户帐号信息。创建新帐号成功后同样会在session中储存用户帐号信息。同理,更新帐户信息会更新session,退出会清除session

 

       对于购物信息,也是存在于session中。存储购物车后会将购物车信息储存在session中。存储信用卡时会在session中保存信用卡信息,等等,不一一介绍了。 


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用MiddleGen 产生hibernate的数据库表映射文件-JSP教程,数据库相关
·关于防火电线电缆的特性和型号
·一个jsp连接mysql的简单例子-JSP教程,Jsp/Servlet
·ip网络拓扑自动发现
·XML入门精解之文件格式定义(DTD)-.NET教程,XML应用
·Flash 和 ASP / PHP 以及 Javascript 的交互-ASP教程,ASP应用
·VB6如何让程序开机就自动启动-.NET教程,VB.Net语言
·Java数据库字符国际化-JSP教程,数据库相关
·ip网络性能测试系统介绍
·.NET三层经典架构PetShop3.0分析之表现层-.NET教程,.NET Framework
最新文章
·photoshop抠出墨滴入水的流动效果_photoshop教程
·只需十三招 轻松学会利用博客赚钱_网赚技巧
·对话王学集:专注是个人网站的成功法典_站长访谈
·李想:消费者和渠道是垂直类网站的关键_站长访谈
·个人站点提高访问量谋略3_站长心得
·再谈多媒体文件的搜索技巧_google推广
·用自己的方法去做搜索优化和做站_seo网站优化
·backpack - 体验可读写的web服务_站长心得
·搜索引擎优化策略_seo网站优化
·从jz123的发展看个人网站发展的关键_站长心得
相关主题
  • .NET三层经典架构PetShop3.0分析连载一-.NET教程,.NET Framework
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭