linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > asp.net >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·NetBPM工作流的一个示例:请假
·Office Web Components(OWC)绘
·asp.net正则表达式语法
·asp.net 2.0 ajax中使用PopupC
·Ado.Net读取Excel常见问题总结
·数据源为空时如何让GridView显
·如何让UpdatePanel支持文件上传
·C#.Net的常见面试试题和参考答
·asp.net ajax客户端编程+jquer
·Brettle.Web.NeatUpload.dll支
·ASP.NET使用Cookie
·ASP.NET DEMO 15: 同时支持行单
·如何使IE的后退按钮无效
·如何在ASP.NET中用OWC绘制图表
·asp.net:正确判断当前用户角色
最新文章
·Ajax Control Toolkit Animati
·讨论一下类似BlogEngine内一次
·使用CSS+SiteMap+UserControl+
·Asp.net中多彩下拉框的实现
·浅谈ASP.NET的Postback
·分清ASP.NET AJAX中的Extender
·Tip:在使用AjaxControlTookit
·有关注册DataItem的一些可能被
·IIRF(Ionic's Isapi Rewrite
·asp.net 客户端回调功能的实现
·关于控件部分的看法--读Progra
·为什么在vista上做开发
·如何封装JS和CSS文件为服务器端
·岂今我看过的最强的排序算法
·设计模式学习笔记之单件模式
Google
 
读Programming ASP.NET中文版控件
[ 作者:  加入时间:2007-10-29 14:15:23  来自:Linux联盟收集整理 ]
读书一般先看目录,并且习惯性的从第三章开始看,除了胡百敬老师的书和代码大全外,其他见过的中文技术书籍无论是自己撰写的还是翻译的都清一色的在前两章添加N多基础知识,不管讲的好不好,第一次看一本书从第三章开始看都成了习惯。 hmrLinux联盟
   hmrLinux联盟
  同其他讲解asp.net的书一样,第三章是从控件开始讲起的,但是读罢此章,作者描述问题的思路和译者的翻译确实让我迷惑了很多,继续看完后面的章节,感觉作者刚下笔实在是太紧张,而且太想把asp.net介绍给一个从来没有接触过web开发的朋友了。 hmrLinux联盟
   hmrLinux联盟
  我们从另一个角度还看asp.net中的几种控件:asp.net server control, html server control, html control。 hmrLinux联盟
   hmrLinux联盟
  asp.net server control是最基础的asp.net组件,本书也使用了6章来介绍了常用的控件、2.0的新控件和控件开发的知识。而html的两种control和asp.net server control之间的关系如何理解呢?最简单的就是站在一个最高的角度来看——看它们最终在呈现到客户端浏览器的时候是什么。我们用下面这个很简单场景来看一下: hmrLinux联盟
   hmrLinux联盟
  假设我们要用户输入用户名,点击提交按钮后服务器根据用户名从服务器获得用户的年龄然后显示在页面上。我们拖放上一个Textbox和一个Button,再放置并配置好一个验证控件就ok了。当我们使用验证控件的时候,asp.net会将起使用span标记和一堆控制样式的属性将*呈现到页面上,而运行机制是用脚本控制的,这些脚本会自动根据用户的浏览器将适合该浏览器的代码一起发送到客户端上。 hmrLinux联盟
   hmrLinux联盟
  这时候我们运行这个页面,看其source code,很容易看出asp.net server button control就是一个type为submit的html input control。这时候我们再放置一个html control的button控件,然后将其属性加上runat="server",再运行,然后看源代码,就可以看到他被render成一个type为button的html input control了。这时候点击两个控件中的任何一个都会造成页面提交(如果验证控件验证通过的话),作为submit的asp.net server control很容易理解为什么被会引发提交,那么html server control呢?是因为它调用的脚本里有__doPostBack('Button2',''),而页面里的__doPostBack()函数使得页面提交了。而加入了验证控件后,两者再提交前都是需要做数据检查的,使用的都是脚本来验证是否可以提交页面数据,但是方式是截然不同的: hmrLinux联盟
   hmrLinux联盟
  <input type="submit" name="Button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))" id="Button1" /> hmrLinux联盟
  <input language="javascript" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(''); __doPostBack('Button2','')" name="Button2" type="button" id="Button2" value="button" /> hmrLinux联盟
  <span id="RequiredFieldValidator1" style="color:Red;visibility:hidden;">Please enter your username</span> hmrLinux联盟
  这时我们可以看到嵌入资源文件的脚本这样被使用了,但是如果想知道这些方法具体做了些什么可以借助fiddler、httpwatch或firebug这样的工具来看,不过最快捷的办法是在浏览器的地址栏敲入javascript:js_method_name来查看。比如javascript:WebForm_DoPostBackWithOptions就能看到该方法的内容了。 hmrLinux联盟
   hmrLinux联盟
  好,我们刚才从结果上入手,算是比较深入的看到了结果和客户端页面执行的过程,这时我们不妨再跳出来,重新审视一下这个过程:我们需要的是用户输入其username,然后我们根据该值从数据库里取出对应的年龄并显示在页面上,那么整个过程应该是用户数据姓名提交,服务器得到用户名,然后将年龄得到,返回给客户端。抛开http的信息来回传递的信息应该只有username和age,但是看看我们现在,是否传送了太多无用的数据? hmrLinux联盟
   hmrLinux联盟
  那我们简化一下流程:我们全部使用html control来做,分别放置一个type为button和text的input控件,当button被点击时执行一个javascript function检验text里是否有字符然后将其发送到服务器,比如通过调用服务器段的一个web service,这个web服务在验证数据后将数据从database中取出,返回到客户端,在接受到数据后脚本将其呈现在页面上。 hmrLinux联盟
   hmrLinux联盟
  需要注意的是数据在客户端的验证是不可信的,通常情况下大多数浏览器通过地址栏就可以任意修改页面元素的值,所以在服务器做判断是必须要的。 hmrLinux联盟
   hmrLinux联盟
  这时候我们看两个过程简直是天壤之别,但是在开发效率和后期维护上也是天壤之别的。asp.net server control如果用不好,造成的后果就是灾难了。 hmrLinux联盟
   hmrLinux联盟
  看完此章的朋友们再看完了这篇抛的“砖”,然后将一个<asp:Button..../>中的runat="server"去掉,看看是什么结果?思考一下html被浏览器的解释是否能更清晰的认识到Control这个词呢? hmrLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息