webdn
 
  首页     免费截图     VIP会员区     广告Banner     技术文档     网站模板  
网站截图,网站每日新 !
虚拟主机 域名注册

首页 >> WebDN 文档 >> 网络编程 >> ASP.net 技术资料 >> Page 25 >> ASP.NET入门随想之博德之门 类与实例

 

ASP.NET入门随想之博德之门 类与实例

【摘 要】 眼看着Sarevok渐渐化成一阵灰飘向神殿的地下,你可以感应到Sarevok的灵魂正慢慢的回归到Bhaal地底神殿之中,博德之门的故事就这样告一段落。欣喜、疑惑、焦虑、顿悟、共鸣、回味……所有的一切都来自体验的快乐,这就是游戏RPG的真谛。

眼看着Sarevok渐渐化成一阵灰飘向神殿的地下,你可以感应到Sarevok的灵魂正慢慢的回归到Bhaal地底神殿之中,博德之门的故事就这样告一段落。欣喜、疑惑、焦虑、顿悟、共鸣、回味……所有的一切都来自体验的快乐,这就是游戏RPG的真谛。

  ■ 事件驱动的页面 - 单线索与多线索的RPG

  千头万绪,让我们从一个网站常见功能--登录功能开始。

  在ASP架构下,我们习惯于用如下思路来实现这个功能:

  ·一个表单页面 通常我们把它命名为Login.asp,要进门呀,请登记,此页面的作用是让网站用户填写其登录数据,通常还附加上用户数据JavaScript校验函数;

  ·一个审核程序 通常命名为CheckLoign.asp,让我看看你有没有资格进门,所以审核程序包括三个环节:读取用户提交数据、数据库验证、验证结果跳转。 如下图:

ASP.NET入门随想之博德之门 类与实例

  这是一个面对过程的编程思想,登录过程通常用 login.asp(提交) -> check.asp(审核) -> 指定页面.asp(进场)这个流程来完成。是的,流程!正如早期的RPG游戏,这个BOSS不倒下,故事就发展不下去。流程对于面对过程程序设计是如此的重要,以至于我们在系统分析的初期就必须从现实中抽象出整个系统的流程,并用程序实现和控制,流程抽象水平高低,直接决定软件质量。

  换个角度看,用一句话概括事件驱动思想,就是多线索的RPG设计。它需要一个场景,几个事件触发点,对应的事件处理程序,所有这一切,组合在一块,即被称之为对象(object),所以ASP.NET要求你这么来看待每一个页面:

  ·每一个页面是一个WEB FORM ,包括一个<form runat="server">;

  ·拖放控件加入各种元素;可以用Property浏览器定义控件和属性;

  ·为控件添加事件处理程序。

  具体到Login这个对象,它包括一个页面(由用户名输入框、密码输入框、提交按钮和登录信息等控件组成)和一个事件处理程序(登录审核)。细心的看客可以看出,Login对象是自已的事情自己做,就不需要再麻烦别人来协同完成,这也是为什么<form runat="server">不需要确定提交对象的原因。

  ■ 用XHTML+CSS来设计页面 - 书同文,车同轨

  如果是静态页面,那么页面设计就是WEB建设的全部内容,在互联网发展的早期,这个形同WORD文档的活可以换回好几百银子。现在它回归本色--人机界面。与WIN桌面程序二进程代码不同的是,WEB页面居然由HTML语言也就是字符来描述,偏偏HTML这位好端端的黄花闺女软弱,在被强龙地头蛇多年糟蹋下,被摧残成不成样,而浏览器也是个硬汉,啥苦能受,啥食能吃。于是问题就越发儿严重,重金打造的信息网络高速公路上感情至少30%跑的是垃圾车!终于冒出秦始皇般的W3C组织搞了个书同文,车同轨,由于便有了XHTML、XML之类的标准。

  自从看了Jeffrey Zeldman在2003年出版《Designing With Web Standards》后,我从心底里是赞同并且身体力行XHTML+CSS标准。除了一些语法格式的规定外,XHTML最核心的精神有二:一是主张把网页的内容(HTML)、表现(CSS)和脚本(DOM)分离(或干脆做成三个文件);二是强调网页内容是有结构,分别用<DIV>、<Span>、<UL>、<P>等结构标签来定义。如下例:

<div id="LoginDiv">
<form id="Form1" method="post" runat="server">
<span>
 <asp:Label id="lblMessage" runat="server">请输入用户名和密码:</asp:Label>
</span>
<ul>
 <li><asp:TextBox id="txtUserName" runat="server" /></li>
 <li><asp:TextBox id="txtPassword" runat="server" /></li>
 <li><asp:Button id="btnLogin" runat="server" Text="我要登录" /></li>
</ul>
</form>
</div>


  使用VS设计页面后得出一个结论:FrontPage僵尸复活。MS工程师似乎不太愿意让我们这群艰苦奋斗的蓝领们过于受累,他们力图让网页表现变成一件最简单的事情,没有必要折腾得那么复杂,用panel控件(实际上就是<div>的变体)来定义网页内容的结构足矣,在页面中加入用户不可见的结构标签那简单是浪费青春大好时光。唉,一如其前任,简单的代价是巨大的,VS自动生成的HTML代码象肥得流油的胖子,各个元素里充满各种各样多余的属性,唉,我那可怜的服务器资源,能背得动吗?

  ■页面的类与实例 - 小样,别以为你换了件马甲我就认不出你

ASP.NET入门随想之博德之门 类与实例

  "ASP.NET是一个事件驱动的、基于控件的体系结构,利用.NETFramework的System.web类中所描述的功能,从服务器瑞代码生成内容和动态客户端代码"

  如果撇开各个控件的表现属性不管,Login这个对象就是四肢加一躯干,不同Login页面的表现但它的核心组成不变,小样,别以为你换了件马甲我就认不出你了,所以,我们把这最核心的组成用特定的格式来描述,称成为类(class),而加上表现的页面称之为该类的一实例,如上图所示,而HTML页面也会出现对应的一条语句:

<%@ Page language="c#" Codebehind="Login.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.Login" %>


  双击button控件,我停顿许久。只花了半分钟拖放四个控件、略加修改,代码框架已整洁地出现在眼前,页面抽象瞬间完成,WEB编程终于回归到桌面程序框架!如果你熟悉VS的系列工具,看懂这段代码几乎不需要太多的过度,唯一陌生的,就是那几个System.Web.UI类,但经过JavaScript的锻炼,几乎可以想像出这些类的各种属性。代码导航条、智能感知,无一不加重我对VS编程环境的良好印象。

  别酸了,还是输入登录事件处理代码吧!

private void btnLogin_Click(object sender, System.EventArgs e){
 if ((txtUserName.Text=="孙二娘")&&(txtPassword.Text=="十字坡"))
  lblMessage.Text="热烈欢迎世界著名武打巨星孙二娘小姐回乡考察投资";
 else
  lblMessage.Text="靠,这年头什么都有假的!";
}


  前一段在CSDN看到一网友在感叹VS让WEB程序员大为掉价,编程有如邻居玛丽格特大妈的蛋糕活,嘿,是有点象!使用VAX-11的行编辑器折腾了好几个月的Pascal,第一次使用Turbo Pascal的时候,我也有这样的感叹,可惜玛丽格特大妈的蛋糕活却还是越来越复杂。

  ■ 编码规范

  企业强调规范,因为它强调团队合作,所以控件起名也有讲究,别忘了刚才说的"书同文、车同轨"。匈牙利命名规范是一个久远的咒语,贴出来供大家参考 :

  匈牙利命名规范 组件名包括两个部分:前缀和性质标识名。

  1. 组件的前缀

  1) 从组件类型名中移去T前缀。

  2) 除了第一个元音,删去所有元音字母。

  3) 压缩双字母。

  4) 如发生冲突,则在某一组件前缀中加入一个元音。

  2. 组件性质标识名

  组件性质标识名是组件意图的描述。例如,一个用于关闭窗体的TButton组件可命名为btnClose。一个编辑人名的编辑框组件可命名为edtFirstName。


电话咨询:010-60520722 QQ咨询:3792656   |   583696287   |   66733350 关于WebDN  |  站点地图  |  联系我们  |  支付方式  |  友情链接
© 2004-2008 WebDN.com 版权所有. 沪ICP备05040479号