科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件ASP.NET 2.0 Web Part编程之定制Web Part(2)

ASP.NET 2.0 Web Part编程之定制Web Part(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本文中,我们先简单回顾一下ASP.NET Web Parts的粗略架构;然后,我们着手创建一个定制的Web Part控件,从而领略一下ASP.NET 2.0为进一步扩展创建定制服务器控件的技术。

作者:朱先忠 来源:51CTO.com 2007年9月2日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在此,用户可以选择需要的Web Part件—该控件提供他们选择的内容或功能,例如收集自各种数据源的RSS回馈数据等。

 

如果用户点击其中一个特定Web Part上的“Edit”链接(例如图3中的高亮区带),则将出现相应于一个Part特定的编辑器。

 

Part特定的编辑器可以包含开发者认为适当的任何用户定制。用户可以从中选择要显示多少项,以及是否显示指定图像等。

 

当启动“Edit”模式时,Web Part能够围绕着一个Web Part Zone或在两个区带间移动。此外,Web Part还能够被连接到Part间建立的属性绑定。例如,一个Web Part的属性可以用于约束在一个不同的Web Part上显示的数据。

 

【重要结论】任何ASP.NET控件都能够不经任何修改用作一个Web Part。例如,任何现有的ASP.NET控件、用户控件或定制控件都能够简单地拖放到一个WebPartZone中的一个.ASPX页面中。

 

注意,这个“拖放”将引起一个对WebPartManagerCreateWebPart()的隐式调用—此方法将创建一个GenericWebPart对象实例并且使用你添加到页面中的控件来初始化这个GenericWebPart对象。你可以在设计时刻或运行时刻动态地使用任何标准控件作为一个Web Part

 

因此,一旦我们搞清楚了所谓的“Zone架构”,那么,使用Web Part进行Part开发则非常类似于使用Visual Studio进行的任何其它可视化控件开发。而且,创建定制的Web Part与开发定制ASP.NET控件之间存在很大相似之处—创建定制的Web Part需要继承自WebPart类,而创建定制ASP.NET控件需要继承自Control类。

 

三、创建定制的Web Part

 

WebParts控件组出现之前,尽管开发者也可以模拟现在Web Part所具有的大多数功能;但是,开发者必须在后台以编程方式添加大量的属性—例如在一个Web Part中所频繁使用的GenericWebPart属性。尽管这种方法完全可;但是如今,构建包括这种功能的Web应用程序的开发者却逐渐趋向于先构建全面支持“Web Part”功能的控件—然后再把这些“积木块”应用于Web页面开发。

 

就象创建标准ASP.NET控件一样,创建定制的Web Part控件也存在两种典型的方法—用户Web Part和定制Web Part

 

(一)第一种方法—继承自基类WebPart

 

我们可以创建一个继承自基类WebPart的定制控件。这种方法的一大优点是:这类控件能够被编译成一个二进制.DLL文件,而且该.DLL可安装到全局程序集缓存(GAC)中。

 

此时,我们的类可能看起来如下面的列表1所示。

 

列表1—定制Web Part的典型代码

 

Imports System.ComponentModel

Imports System.Web.UI

")>

Public Class SampleControl

Inherits System.Web.UI.WebControls.WebParts.WebPart

Private strSubtitle As String

Private _Title As String = "我的WebPart"

Public Sub New()

strSubtitle = "关于" & Now.ToString

Me.TitleIconImageUrl = "mySampleIcon.gif"

End Sub

Private Sub BookDisplay_Init(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles Me.Init

MyBase.HelpUrl = "http://www.example.net/myWebPartHelp.htm"

End Sub

Public Overrides Property Title() As String

Get

Return MyBase.Title

End Get

Set(ByVal value As String)

MyBase.Title = _Title

End Set

End Property

Public Overrides ReadOnly Property Subtitle() As String

Get

Return strSubtitle

End Get

End Property

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)

MyBase.Render(writer)

End Sub

End Class

 

在构建编译控件时,.DLL形式使得控件的发布非常容易,而且此控件的应用范围不并局限于定义它们的应用程序;但遗憾的是,以这种方式构建的控件却缺乏可视化的设计体验。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章