|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。WebForms用户控件
用户控件先容
除ASP.NET供应的内建的服务器控件外,你还可使用已把握的制造WEBFORMS页面的手艺,轻松的界说本人的控件。实践上,只必要略微修改一下,几近任何WEBFORMS页面都能够作为服务器控件,在其他页面上反复利用。(注重用户控件的范例是System.Web.UI.UserControl,它间接从System.Web.UI.Control承继而来)。WebForms页面被作为服务器控件利用的时分,简称为用户控件。变化以后,一般利用.ascx扩大名来标明用户控件。这就包管了用户控件文件不克不及作为一个独自的webform页面来实行(你能够分明,在用户控件和webforms页面之间,有一点,可是很主要的区分)。用户控件利用Register(注册)指令包括在WebForms页面中:
<%@RegisterTagPrefix="Acme"TagName="Message"Src="pagelet1.ascx"%>
TagPrefix为用户控件断定了独一的称号空间。(如许,具有不异名字的多个用户控件能够相互辨别).TagName的值是用户控件的独一称号(你可使用任何名字)。Src属性是用户控件的假造路径—比方"MyPagelet.ascx"大概"/MyApp/Include/MyPagelet.ascx"。注册用户控件以后,你能够在webforms页面中安排用户控件标签,就像是用寻常的服务器控件一样(包括runat="server"属性):
<Acme:Messagerunat="server"/>
上面的例子展现了webforms页面引进用户控件的情形。本例中的用户控件仅仅是一个复杂的静态文件。
扩大用户控件的属性
当webforms页面作为用户控件处置的时分,webforms页面的大众字段和办法晋级为大众属性(即标签属性)和大众办法(标签的办法)。上面的例子将上一个例子中的用户控件举行延长,增添了两个大众String字段。注重这两个字段既能够在包括页中间接声明,也能够用程序来把持。
除将大众字段晋级为控件属性外,也能够利用属性语法。利用属性语法赛过为了设定大概获得属性值而实行代码。上面的例子树模了一个Address用户控件,他绑定了TextBox控件的text属性。如许做的优点在于该控件“收费”承继了TextBox控件的主动形态办理。注重在包括webforms页面中有两个Address用户控件,分离为"BillingAddress"和"ShippingAddress"设置Caption属性。用户控件的真正壮大的地方就是这类反复使用。
用户控件的另外一个有效的地方是Login控件,用来搜集用户名和暗码。
在这个例子中,服务器考证控件增加到了Login用户控件中
在用户控件中封装事务
好像一般的服务器控件一样,用户控件介入全部哀求实行的性命周期。这就意味着,用户控件可以操纵本人的事务,从包括webforms页中封装某些页面逻辑。
上面的例子演示了一个产物列表用户控件,它在外部处置了本人的提交前往。注重用户控件本身没有绑定<formrunat="server">控件。由于只要一个表单控件呈现在页面上(asp.net不同意嵌套服务器表单),因而留给包括webforms页面往界说他。
用程序创立用户控件
好像一般服务器控件能够用程序创立一样,用户控件也一样。页面的LoadControl办法用来载进用户控件,同时将假造路径传送给用户控件的源文件地点。
Controlc1=LoadControl("pagelet7.ascx");
((Pagelet7CS)c1).Category="business";
Page.Controls.Add(c1);
用户控件的范例是由Control命令的ClassName属性所决意。比方上面的例子,一个文件名保留为"pagelet7.ascx"的用户控件被赋值为"Pagelet7CS"强范例:
<%@ControlClassName="Pagelet7CS"%>
由于LoadControl办法前往的范例是System.Web.UI.Control,以是为了设置用户控件的一般属性,它必需抛出得当的强范例。终极,用户控件到场到基础页面的ControlCollection汇合中。
主要提醒关于包括用户控件的webforms页面,只要当Register命令包括了用户控件(即便没有效户控件标签被实践声明),用户控件的强范例才是可使用的。
本章小结
1、用户控件同意开辟者利用创立webforms页面所利用的程序计划手艺,轻松的创立自界说控件。
2、作为与一般页面的区分,利用.ascx文件扩大名来标明用户控件。这就包管了用户控件不克不及像尺度webforms页面那样实行。
3、利用Register命令,将用户控件包括在webforms页面中。Register命令指定了TagPrefix,TagName,和Srclocation。
4、注册了用户控件以后,就能够像看待一般服务器控件那样,利用用户控件(包括runat="server"属性)。
5、用户控件被包括在webforms页面中今后,他的大众字段、属性和办法晋级为控件的大众属性(标签属性)和办法。
6、用户控件介入每一个客户端哀求的全部性命周期,而且处置本身的事务,封装了部分包括他的webforms页面的页面逻辑。
7、用户控件不克不及包括任何form控件。假如必要的话,能够在包括他的webform页面中利用form控件。
8、用户控件能够用System.Web.UI.Page类的LoadControl办法用用程序来创立。用户控件的范例由Control命令的ClassName属性所决意。
9、关于包括用户控件的webforms页面,只要当Register命令包括了用户控件(即便没有效户控件标签被实践声明),用户控件的强范例才是可使用的。
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。 |
|