仓酷云
标题:
ASP网页编程之Asp.net组件计划浅论
[打印本页]
作者:
谁可相欹
时间:
2015-1-16 23:38
标题:
ASP网页编程之Asp.net组件计划浅论
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。asp.net|计划1、甚么是组件?
检察MSDN,微软是如许给组件界说的:在.NETFramework中,组件是指完成System.ComponentModel.IComponent接口的一个类,或从完成IComponent的类中间接或直接派生的类。这是从纯言语(手艺)角度下的界说,普通的讲,组件是“可自力运作的软件单位”,这里夸大自力运作,也就代表着组件必需具有低耦合性、高重用性等特性。微软将软件分别为两部分:其一是Component,意指具有特定功效、可自力运作、不具有UI接口的单位;其二是Control,也就是我们常说的控件,意指具有特定功效、可自力运作的UI接口单位。
2、进修Asp.net组件必要把握的常识
恣意把握一门.net言语,倡议利用C#,C#是一门全新的言语,但又自创了C++和JAVA的语法,同时引进了一些新观点,在程序员中口啤不错。
了解IIS的运转机制和asp.net的运转形式。
纯熟把握javascript,该剧本言语壮大的功效在处置客户端举措时体现十分杰出,基础上一切的自界说组件都离不开javascript,同时,CSS和DHTML也是要心知肚明的。没举措,他们很少会独自呈现,老是喜好个人上演。
3、组件计划的难度
这个成绩不必问,大概您猜出了几分,一个字:难。
您大概会有所发觉,在编写asp.net使用程序时,很少会对viewstate作深切的研讨,缘故原由很复杂,由于ViewState自己计划的用户工具原本就不是使用程序员,而是组件计划员。假如不是由于客户端必要,您也不会在asp.net中编写大批的javascript剧本,而在组件计划中,很难逃走关系。不止这些,是不是计划成服务器组件?我们的组件是承继Control、仍是承继WebControl或是承继Component?在组件中,必要自界说Attribute吗?必要完成数据绑定吗?怎样绘制组件的表面?怎样和IIS通信?必要post-back吗?良多良多的成绩,都必要组件计划者――辛劳的您往逐一思索。
以是,假如您嗤之以鼻地说:不就是计划一个组件吗?这有何难!那末,我会嘿嘿一笑,由于我晓得,您必定在开顽笑。
可是,万万别怕,“程序员必要探究精力哦!”
4、基类的选择
假如我们计划的是一个WEB可视控件,而且组成WEB页的一部分,那末能够承继Control类大概WebControl类。假如是一个非可视控件,能够承继Component,承继此类的控件计划时不会呈现在页面上,而是呈现在ComponentTray中。还记得OpenFileDialog控件吗?这个文件翻开对话框控件就是呈现在ComponentTray控件中的。
假如我们只是在已有的控件基本上加强功效,那末就承继该已有的控件吧。
5、理论出真知
假定我们要计划一个组件,该组件只同意用户输出数字,该考证事情天然应当放到客户端,客户真个考证剧本能够如许写:
<HTML>
<HEAD>
<METANAME="GENERATOR"Content="MicrosoftVisualStudio6.0">
<TITLE></TITLE>
<scriptlanguage="javascript">
functionVirty(ctrl)
{
if(event.keyCode==13)
returntrue
if(event.keyCode<48||event.keyCode>57)
returnfalse;
else
returntrue;
}
</script>
</HEAD>
<BODY>
<formmethod="POST">
<p>
<inputtype="text"name="T1"size="20"OnKeyPress="javascript:returnVirty(this);">
</p>
</form>
</BODY>
</HTML>
固然,这些考证代码不克不及由用户往写,应当由组件计划者往写,也就是说,当用户把该组件从工具箱中拖到页面上后,运转时应当主动天生考证代码。向WEB页绘制代码,我们重写OnPreRender()办法就能够了。
在重写OnPreRender()办法之前,先写界说几个常量:
privateconststringSCP_NUMBER_ONLY_SCRIPT_ID="{29FD7A41-49FD-4fc4-AFA9-6A0B875A1A51}";
privateconststringSCP_NUMBER_ONLY_HOOK="returnVirty(this);";
privateconststringSCP_NUMBER_ONLY_SCRIPT=
"<scriptlanguage="JavaScript1.2">
functionVirty(ctrl)
{{
"+
"if(event.keyCode==13)
returntrue;
if(event.keyCode<48||event.keyCode>57)
returnfalse;
else
returntrue;
}}"+
"</script>";
上面的办法用于考证代码的天生:
privatevoidRenderJavaScript()
{
if(!Page.IsClientScriptBlockRegistered(SCP_NUMBER_ONLY_SCRIPT_ID))Page.RegisterClientScriptBlock(SCP_NUMBER_ONLY_SCRIPT_ID,string.Format(SCP_NUMBER_ONLY_SCRIPT,base.ID));
}
为何会有Page.IsClientScriptBlockRegistered(SCP_NUMBER_ONLY_SCRIPT_ID)呢?我们设想一下,假如在WEB页中有十个该控件,那是否是就要输入十个如许的剧本?明显,这是多此一举了,以是,我们要用IsClientScriptBlockRegistered()判别该剧本是不是在客户端输入,假如剧本在客户端已注册,则不再输入了。
接上去就是重写OnPreRender()办法了,该办法卖力向客户端绘制剧本。
protectedoverridevoidOnPreRender(EventArgse)
{
base.OnPreRender(e);
RenderJavaScript();
}
人人应当注重到,该剧本必要事务触发才会实行,当用户从扫瞄器输出数据时,假如长短数字,则疏忽该举措,不然才承受输出。这就必要OnKeyPress="javascript:returnVirty(this);"这段代码了。那末,这段代码怎样向客户端输入呢?重写AddAttributesToRender()办法吧,该办法卖力绘制组件的属性。因而,我们写了上面一段代码:
protectedoverridevoidAddAttributesToRender(HtmlTextWriterwriter)
{
base.AddAttributesToRender(writer);
writer.AddAttribute("OnKeyPress",SCP_NUMBER_ONLY_HOOK);
}
最初的源码以下:
/////////////////////////////////////////////////////////////////////////////
///注重,本代码版权一切者为黄忠成师长教师。
///在此暗示感激他写的书《ASP.NET组件计划》
////////////////////////////////////////</p>asp可以使用微软的activeX使得网页功能无比强大,不过安全性也较差,而且是基于的windows服务器,所以性能稳定性也一般
作者:
活着的死人
时间:
2015-1-20 10:46
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者:
小妖女
时间:
2015-1-20 10:48
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
作者:
因胸联盟
时间:
2015-1-29 06:48
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者:
柔情似水
时间:
2015-2-5 23:35
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
作者:
再见西城
时间:
2015-2-14 05:25
接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。
作者:
变相怪杰
时间:
2015-3-4 04:53
如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。
作者:
冷月葬花魂
时间:
2015-3-11 17:04
那么,ASP.Net有哪些改进呢?
作者:
再现理想
时间:
2015-3-27 05:15
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2