博文

ASP.NET2.0服务器控件之Render方法(2007-06-12 15:09:00)

摘要:控件呈现是指向HTTP输出流中写入标记文本的过程。服务器通过HTTP输出流向客户端发送生成的标记文本,这些文本将会通过客户端浏览器转换为可视化的元素显示出来。使用控件呈现,开发人员可以将HTML标记、脚本代码、CSS样式表等等输入到客户端浏览器。实现服务器控件呈现主要有两种方式:一是Control类的Render方法,二是WebControl的RenderContents方法。本文重点介绍使用Control类的Render方法实现控件呈现的应用。

  使用HtmlTextWriter类

  Control类的Render方法主要用于实现控件呈现,其声明代码如下:

protected virtual void Render(HtmlTextWriter output)
  如上代码所示,Render方法的参数是一个HtmlTextWriter类型。为了更好的应用Render方法,读者应首先了解HtmlTextWriter类及其相关内容。

  根据MSDN2005的描述,HtmlTextWriter类用于将标记字符和文本写入到ASP.NET服务器控件输出流。此类提供了ASP.NET服务器控件在向客户端呈现标记时所使用的格式设置功能。为了实现类的功能,HtmlTextWriter类定义了多个字段、属性和方法。由于成员对象众多,本文只挑选了一些常用成员加以说明,同时,还将介绍一些ASP.NET 2.0的新增成员。

  常用成员对象包括:

  ·AddAttribute方法

  对于HtmlTextWriter对象通过对RenderBeginTag方法的后续调用创建的元素,向其开始标记中添加指定的标记属性和值。

  ·AddStyleAttribute方法

  对于 HtmlTextWriter 对象通过对 RenderBeginTag 方法的后续调用创建的元素,向其开始标记中添加标记样式属性。

  ·Write方法

  将指定数据类型连同任何挂起的制表符间距一起写入到输出流。

  ·WriteAttribute方法

  将标记属性及其值写入到输出流。

  ......

阅读全文(2509) | 评论:1

Attribute在.net编程中的应用(2007-06-12 15:06:00)

摘要:Attribute的基本概念 经常有朋友问,Attribute是什么?它有什么用?好像没有这个东东程序也能运行。实际上在.Net中,Attribute是一个非常重要的组成部分,为了帮助大家理解和掌握Attribute,以及它的使用方法,特地收集了几个Attribute使用的例子,提供给大家参考。 在具体的演示之前,我想先大致介绍一下Attribute。我们知道在类的成员中有property成员,二者在中文中都做属性解释,那么它们到底是不是同一个东西呢?从代码上看,明显不同,首先就是它们的在代码中的位置不同,其次就是写法不同(Attribute必须写在一对方括符中)。 什么是Atrribute 首先,我们肯定Attribute是一个类,下面是msdn文档对它的描述:
公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。 在.NET中,Attribute被用来处理多种问题,比如序列化、程序的安全特征、防止即时编译器对程序代码进行优化从而代码容易调试等等。下面,我们先来看几个在.NET中标准的属性的使用,稍后我们再回过头来讨论Attribute这个类本身。(文中的代码使用C#编写,但同样适用所有基于.NET的所有语言) Attribute作为编译器的指令 在C#中存在着一定数量的编译器指令,如:#define DEBUG, #undefine DEBUG, #if等。这些指令专属于C#,而且在数量上是固定的。而Attribute用作编译器指令则不受数量限制。比如下面的三个Attribute: Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用。 DllImport:用来标记非.NET的函数,表明该方法在一个外部的DLL中定义。 Obsolete:这个属性用来标记当前的方法已经被废弃,不再使用了。 下面的代码演示了上述三个属性的使用: #define DEBUG //这里定义条件 using System; usi......

阅读全文(2538) | 评论:0

全javascript版省市二级联动收藏(2007-04-06 11:11:00)

摘要:<script language="JavaScript">
<!--
var g_selProvince;
var g_selCity;
var Provinces=new Array(
new Array("110000","北京市"),
new Array("120000","天津市"),
new Array("130000","河北省"),
new Array("140000","山西省"),
new Array("150000","内蒙古自治区"),
new Array("210000","辽宁省"),
new Array("220000","吉林省"),
new Array("230000","黑龙江省"),
new Array("310000","上海市"),
new Array("320000","江苏省"),
new Array("330000","浙江省"),
new Array("340000","安徽省"),
new Array("350000","福建省"),
new Array("360000","江西省"),
new Array("370000","山东省"),
new Array("410000","河南省"),
new Array("420000","湖北省"),
new Array("430000","湖南省"),
new Array("440000","广东省"),
new Array("450000","广西壮族自治区"),
new Array("460000","海南省"),
new Array("500000","重庆市"),
new Array("510000","四川省"),
new Array("520000","贵州省"),
new Array("530000","云南省"),
new Array("540000","西藏自治区"),
new Array("610000","陕西省"),
new Array("620000","甘肃省"),
new Array("630000","青海省"),
n......

阅读全文(5000) | 评论:2

改变一生的五句话 (2007-04-03 10:33:00)

摘要:第一句话是:优秀是一种习惯。 

  这句话是古希腊哲学家亚里士多德说的。如果说优秀是一种习惯,那么懒惰也是一种习惯。人出生的时候,除了脾气会因为天性而有所不同,其他的东西基本都是后天形成的,是家庭影响和教育的结果。所以,我们的一言一行都是日积月累养成的习惯。我们有的人形成了很好的习惯,有的人形成了很坏的习惯。所以我们从现在起就要把优秀变成一种习惯,使我们的优秀行为习以为常,变成我们的第二天性。让我们习惯性地去创造性思考,习惯性地去认真做事情,习惯性地对别人友好,习惯性地欣赏大自然。 

注解:要会“装”,要持续的、不间断的“装”,装久了就成了真的了,就成了习惯了,比如准时到会,每次都按时到会,你装装看,你装30年看看,装的时间长了就形成了习惯。:) 

  第二句话是:生命是一种过程。 

  事情的结果尽管重要,但是做事情的过程更加重要,因为结果好了我们会更加快乐,但过程使我们的生命充实。 

  人的生命最后的结果一定是死亡,我们不能因此说我们的生命没有意义。世界上很少有永恒。大学生谈恋爱,每天都在信誓旦旦地说我会爱你一辈子,这实际上是不真实的。统计数据表明,大学生谈恋爱的100对里有90对最后会分手,最后结婚了的还有一半会离婚。你说爱情能永恒吗?所以最真实的说法是:“我今天,此时此刻正在真心地爱着你。”明天也许你会失恋,失恋后我们会体验到失恋的痛苦。这种体验也是丰富你生命的一个过程。 


注解:生命本身其实是没有任何意义的,只是你自己赋予你的生命一种你希望实现的意义,因此享受生命的过程就是一种意义所在。 


  第三句话是:两点之间最短的距离并不一定是直线。 

  在人与人的关系以及做事情的过程中,我们很难直截了当就把事情做好。我们有时需要等待,有时需要合作,有时需要技巧。我们做事情会碰到很多困难和障碍,有时候我们并不一定要硬挺、硬冲,我们可以选择有困难绕过去,有障碍绕过去,也许这样做事情更加顺利。大家想一想,我们和别人说话还得想想哪句话更好听呢。尤其在中国这个比较复杂的社会中,大家要学会想办法谅解别人,要让人觉得你这个人很成熟,很不错,你才能把事情做成。 ......

阅读全文(2794) | 评论:3

一些有点意思的签名 (2007-04-03 10:17:00)

摘要:        1.先是超女冠军李宇春,后是奥斯卡奖的《断臂山》,中国同性恋们终于站起来了!(北大未名)

  2.有看《金刚》不哭的MM吗?我想没有~但如果换成是女金刚和男帅哥的话,我想就完全不会有人哭了~(北大未名)

  3.欧盟一个劲儿指责中国打击盗版不力,因为全球限量生产的6辆法拉利仅在中国就有7辆……(水木社区)

  4.“不得穿内裤和拖鞋进教室!”说实话,即便在南邮混了四年,我脸皮也没厚到不穿内裤进教室……(紫金飞鸿)

  5.长得帅有个屁用,消费完了能用那张脸去刷卡么?!!(天涯真我)

  6.五一长假,租女友,一日。(兵马俑)

  7.特大喜讯:《实况足球10》终于有中国队啦!!!中国队唯一用途就是高手在向周围人炫耀时说:“来来来,我们切两把,我选中国队~”(北大未名)

  8.小朋友们都站好,摆个pose照相啦!唉~小莉,站要有站相,不要像Frjj那样~~~(北大未名)

  9.以前资本家宁可把牛奶倒掉也不给穷人喝,现在房产商宁可把房子空着也不给百姓住……(兵马俑)

  10.不能成为举人,如何傍眼探花?(饮水思源,又见隐讳~)

  11.今天一群日本人来我校参观——说实话,这是我第一次看到穿衣服的日本人……(泉韵心声)

  12.中国石油十大化:干部贵族化,员工奴隶化,人际复杂化,加班日夜化,上班无偿化,业绩保密化,竟聘内定化,检查形式化,待遇民工化……加薪?那是TMD的神话!!!(猫扑)

  13.上帝欲使人灭亡,必先使其疯狂;上帝欲使人疯狂,必先使其买房!(日月光华)

  14.我宁愿接受你在流氓身下拼死反抗,也不愿承受你在男人身下飘飘欲仙!(天涯QQ驿站)

  15.由于之前大阪钢巴队在国内联赛以6-1痛扫同城死敌大阪樱花队,所以今晚亚冠比赛有40名大阪樱花队的球迷来大连为实德队加油……(水木社区)

  16.终于明白周杰伦的《范特西》是什么意思了——粥!(日月光华)

  17.答辩难度要视答辩老师头天晚上的性生活质量而定......

阅读全文(2600) | 评论:1

用ASP.NET 2.0实现AJAX风格的Web开发(2007-04-03 10:05:00)

摘要:归纳来看,AJAX风格的Web应用程序展示了下列特征:

  · 到Web服务器的异步请求-在用户等待来自于Web服务器的响应时,浏览器用户接口不会被堵塞,而是可以继续响应用户的交互。

  · 高度依赖于用JavaScript编写的基于浏览器的逻辑-W3C DOM的最新改进和标准化为实现动态的客户端UI更新提供了支持。

  · 在浏览器和Web服务器之间的基于XML数据的交换-XMLHttp对象使得与Web服务器进行通讯而不需要重载页面成为可能。

  一个AJAX应用程序和传统型Web应用程序之间的最大差别是,每次用户交互不会导致每一个HTTP请求都被发送到Web服务器;而是,用JavaScript实现的基于浏览器的逻辑掌握着控制权,之后再由该控制决定是局部处理请求还是向服务器作异步调用。一旦到服务器的异步调用结束,客户端逻辑立即适当更新UI的相关部分。这种方式具有下列优点:

  · 用户体验更为丰富。例如,当一个Google地图用户沿一个方向拖动地图时,系统就会在后台向服务器发出一个异步请求,结果是他能够在超出屏幕边界后继续拖动。这样以来,当用户进一步拖动地图时,新的图像已经可用了。这导致一种响应更快的感觉。

  · 既然跨越基于XMLHttp的到服务器的调用状态并没有丢失,那么,AJAX应用程序就可以避免每次都重新生成UI界面。

  · 更多的逻辑位于浏览器端,从而减少了到Web服务器的来回请求的数量,进而全面改进系统的潜力。

  尽管存在这么多的优点,然而AJAX风格的应用程序还是存在一些不足之处。例如,AJAX风格应用程序的开发是比较困难的,因为缺乏相应的框架(一组类似于Windows MFC工具包的UI类)和IDE(调试,可视化设计,等等)支持。另外,基于AJAX进行开发要求一个人必须至少掌握两种语言(DHTML和JavaScript)。而且,AJAX风格应用程序的编码需要更长的时间,因为它需要另外的测试以使其支持多浏览器版本和类型。最后,由于基于JavaScript的源码为终端用户可存取,所以开发过程中的安全分析也变得非常重要。

  幸好,例如Atlas,AJAX.NET和Google Maps API等工具的出现为将来构建AJAX......

阅读全文(2822) | 评论:2

 asp.net常见问题(二)(2007-04-03 09:53:00)

摘要:1. 打开新的窗口并传送参数:   传送参数: response.write("<script>window.open
('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")   接收参数: string a  = Request.QueryString("id");
string b  = Request.QueryString("id1"); 2.为按钮添加对话框 Button1.Attributes.Add("onclick","return confirm('确认?')");
button.attributes.add("onclick","if(confirm('are you sure...?'))
{return true;}else{return false;}") 3.删除表格选定记录 int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString() 4.删除表格记录警告 private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs e)
{
 switch(e.Item.ItemType)
 {
  case ListItemType.Item :
  case ListItemType.AlternatingItem :
  case ListItemType.EditItem:
    TableCell myTableCell;
    myTableCell = e.Item.Cells[14];
    LinkButton myDeleteButton ;
 ......

阅读全文(2662) | 评论:0

asp.net常见错误(-)(2007-04-03 09:44:00)

摘要:ASP.NET常见问题解答: 一、无法在服务器上调试 Error while trying to run project: unable to start debugging on the web server. Would you like disable future attempts to debug asp.net pages for this project? 解决方法:说明IIS没配置好,网;"业]@rUaYj打开IIS,查看默认站点属性,选中“目录安全性” 选项卡——>编辑“匿名访问和身份验证控制”,确认“集成WINDOWS验证”被选中 二、没有权限,无法在服务器上调试 Error while trying to run project: unable to start debugging on the web server. You do not have permissions to debug the server. Verify that you are a member of the debugger users’ group on the server. Would you like disable future attempts to debug asp.net pages for this project? 解决方法:由于系统安全、权限设置不合适。 (1) 确认“集成WINDOWS身份验证”被选择 (2) 再确认登陆帐户对于IIS设定的目录具有完全控制权限。 (3) 如果你创建的WEB项目是机器名,说明目前站点是一个INTERNER站点, IE的默认设置将影响你的调试。 三、发送用于调试的HTTP请求过程中发生服务器端错误,无法在服务器上进行调试。 Error while trying to run project: unable to start debugging on the web server. Server side-error occurred on sending debug HTTP request. Make sure the server is operating correctly. verify there are no syntax errors in we......

阅读全文(9250) | 评论:28