仓酷云

标题: 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