仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 644|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET编程:在ASP.NET Atlas中创立自界说的Behavio...

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。asp.net|创立EnglishVersion:http://dflying.dflying.net/1/archive/120_build_your_own_behaviors_in_aspnet_atlas.html
Atlas中的Behavior界说了当控件的某个事务被触发时的举动。Behavior能够看做是一种封装了的DHTML的事务,比方click和hover等。Behavior一样能够是一个组件,可被attach到某个Atlas客户端控件上,以供应这个Atlas客户端控件更初级,更丰厚的功效,比方一些庞大的拖放(drag&drop),主动完成,浮动等功效。Behavior将被界说在某个Atlas控件的behaviors汇合中。
从Atlas文档和源文件中,我们能够晓得Atlas有以下一些内建的Behavior:
ClickBehavior:供应对鼠标点击的处置。
FloatingBehavior:供应拖放(drag&drop)的效果。
HoverBehavior:供应对DHTML的事务onmou搜索引擎优化ver,onmou搜索引擎优化ut,onfocus和onblur的处置。
Pop-upComponent:供应pop-up的功效,能够用来完成初级的tooltip。
Auto-completeBehavior:供应主动完成的功效。这也是Atlas演示中经常使用的功效之一。这个Behavior还必要服务器真个处置程序。
ClickBehavior用来处置DHTML的onclick事务,十分有效可是它供应的功效有些复杂。在一些对照庞大的程序中,我们大概必要将摆布键的功效分隔,比方,左键用来选择,右键用来弹出快速菜单。固然我们能够把这个if-else放在ClickBehavior的处置函数中,但这并非好的Atlas的办法。因而,明天我们来编写一个加倍壮大的ClickBehavior,叫做ExtendedClickBehavior,它能够在Behavior的外部就把摆布键分隔,而且激发出两个分歧的事务。经由过程编写这个ExtendedClickBehavior,您也能够懂得在Atlas中创立自界说的Behavior的一样平常历程。
一般的,创立自界说的Behavior有以下5个步骤:
承继于Sys.UI.Behavior基类。
界说您本人的事务以封装DHTML中的事务。这些事务将被用来表露给其他的Atlas控件以取代原本的,未经润色的DHTML事务。
在Behavior的机关函数中为您的事务指定处置函数,并在析构函数中detach事务的处置函数。
在处置函数中收回响应的事务。在ExtendedClickBehavior的例子中,我们依据鼠标按键的分歧来收回分歧的事务。
在getDescriptor()办法中加上对您界说的事务的形貌。
上面是ExtendedClickBehavior的JavaScript代码。上述五个步骤在代码内以正文的情势标出。将上面的代码保留为ExtendedClickBehavior.js。
Sys.UI.ExtendedClickBehavior=function(){
Sys.UI.ExtendedClickBehavior.initializeBase(this);

var_clickHandler;

//step2
this.click=this.createEvent();
this.leftClick=this.createEvent();
this.rightClick=this.createEvent();

this.dispose=function(){
//step3
this.control.element.detachEvent(onmousedown,_clickHandler);
Sys.UI.ExtendedClickBehavior.callBaseMethod(this,dispose);
}
this.initialize=function(){
Sys.UI.ExtendedClickBehavior.callBaseMethod(this,initialize);
//step3
_clickHandler=Function.createDelegate(this,clickHandler);
this.control.element.attachEvent(onmousedown,_clickHandler);
}

this.getDescriptor=function(){
vartd=Sys.UI.ExtendedClickBehavior.callBaseMethod(this,getDescriptor);

//step5
td.addEvent(click,true);
td.addEvent(leftClick,true);
td.addEvent(rightClick,true);
returntd;
}

//step4
functionclickHandler(){
this.click.invoke(this,Sys.EventArgs.Empty);
if(window.event.button==1)
{
this.leftClick.invoke(this,Sys.EventArgs.Empty);
}
elseif(window.event.button==2)
{
this.rightClick.invoke(this,Sys.EventArgs.Empty);
}
}
}
//step1
Sys.UI.ExtendedClickBehavior.registerSealedClass(Sys.UI.ExtendedClickBehavior,Sys.UI.Behavior);
Sys.TypeDescriptor.addType(script,extendedClickBehavior,Sys.UI.ExtendedClickBehavior);
让我们在页面中测试一下这个ExtendedClickBehavior。在页面上增加一个<div>用来点击,一个label用来显现点击的信息。上面是ASPX文件中的HTML界说。不要健忘在ScriptManager中增加对ExtendedClickBehavior.js文件的援用。
<atlas:ScriptManagerEnablePartialRendering="true"ID="ScriptManager1"runat="server">
<Scripts>
<atlas:ScriptReferencePath="ExtendedClickBehavior.js"/>
</Scripts>
</atlas:ScriptManager>
<div>
<divid="myButton"style="border:1pxsolidblack;width:20em;white-space:normal">ClickOnMe(LeftandRight)!</div><br/>
<spanid="myLabel">notclicked</span>
</div>
上面是Atlas剧本界说。注重到我们利用了Atlas的setPropertyAction(有关AtlasAction,请见后续文章)用来在每次点击后设置label的text。
<pagexmlns:script="http://schemas.microsoft.com/xml-script/2005">
<components>
<labelid="myButton">
<behaviors>
<extendedClickBehavior>
<click>
<setPropertytarget="myLabel"property="text"value="clicked"/>
</click>
<leftClick>
<setPropertytarget="myLabel"property="text"value="leftclicked"/>
</leftClick>
<rightClick>
<setPropertytarget="myLabel"property="text"value="rightclicked"/>
</rightClick>
</extendedClickBehavior>
</behaviors>
</label>
<labelid="myLabel"/>
</components>
</page>
无论谁倒了对双方阵营的粉丝们也是有害无益。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-19 18:56:51 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-26 14:38:37 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
地板
发表于 2015-2-10 03:49:34 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
深爱那片海 该用户已被删除
5#
发表于 2015-2-28 19:04:24 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
飘灵儿 该用户已被删除
6#
发表于 2015-3-10 06:05:37 | 只看该作者
CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。
蒙在股里 该用户已被删除
7#
发表于 2015-3-17 05:06:51 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
分手快乐 该用户已被删除
8#
发表于 2015-3-23 19:59:07 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 10:57

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表