65.9K
CodeProject 正在变化。 阅读更多。
Home

使用自定义控件添加每日 Dilbert 漫画

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.25/5 (4投票s)

2006年11月10日

3分钟阅读

viewsIcon

35253

downloadIcon

277

本文描述了构建一个用于在网站上显示每日 Dilbert 漫画的自定义控件。

引言

本文描述了构建一个用于在网站上显示每日 Dilbert 漫画的自定义控件。该控件非常简单,并通过 Chandu Thota 在 eSynaps.com 上提供的公共 Web 服务进行服务。 构建完成后,可以将该控件放置在任何网页上,它将从 Scott Adam 的 Dilbert 档案中检索新的漫画,每天显示。

Web 服务返回图像文件的路径或图像的编码副本。此示例仅使用文件路径选项在初始化时填充图像。

图 1:使用中的每日 Dilbert 自定义控件

入门

此项目随附的文件包括一个 Web 控件库项目和一个演示 Web 站点。为了开始,请打开随附的 zip 文件并将两个项目安装到您的文件系统上。打开 IIS 并为 Web 应用程序创建一个虚拟目录。将解决方案打开到 Visual 2005 中,并进行任何必要的更改,以将两个项目引入解决方案。正确配置后,您的解决方案资源管理器应显示这些项目、引用和文件

图 2:包含 Web 应用和控件库的解决方案资源管理器

在检查解决方案时,请注意,“Dilbert”控件库仅包含一个控件,该控件名为“DilbertControl”。此项目还包括一个指向 http://www.esynaps.com/WebServices/DailyDiblert.asmx?op=DailyDilbertImagePath 的 Web 引用;此公共站点提供用于捕获控件显示的 Dilbert 档案卡通的 Web 服务。

Web 应用程序仅包含一个网页 (default.aspx),并包含对“Dilbert”DLL 的引用。

Web 应用程序用作测试自定义控件的容器。页面本身不包含其他代码,页面上唯一的其他元素显示文本“The Daily Dilbert”。

代码:Dilbert 控件

“Dilbert”自定义控件在初始化时构建用于从 Web 服务检索信息;在检索的信息中是卡通图像的 URL 路径。在初始化时,检索 URL,当控件呈现时,创建一个图像并添加;其 imageURL 属性设置为指向从 Web 服务捕获的 URL。

在检查代码时,请注意,项目中仅包含默认导入。类本身继承自 WebControl 类。

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

<ToolboxData("<{0}:DilbertControl " & _ 
                "runat=server></{0}:DilbertControl>")> _
Public Class DilbertControl
    Inherits WebControl

在类声明之后,声明了两个成员变量;一个用于 Web 服务,一个字符串变量用于包含卡通图像文件的路径。

Private mDilbert As Dilbert.com.esynaps.www.DailyDilbert
Private mDilbertPath As String

接下来是初始化处理程序

Private Sub DilbertControl_Init(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Init

    Me.Width = 600
    Me.Height = 100

    Try
        mDilbert = New Dilbert.com.esynaps.www.DailyDilbert
        mDilbertPath = mDilbert.DailyDilbertImagePath()
    Catch
        Exit Sub
    End Try
End Sub

控件初始化处理程序创建一个“mDilbert”成员变量的新实例,然后将“mDilbertPath”字符串变量设置为包含通过调用服务“DailyDilbertImagePath” Web 方法返回的图像 URL。

要处理的最后一个细节是呈现;在这里覆盖 RenderContents,并且使用 TryCatch 块,启动一个 Div,然后创建一个图像,其 image URL 属性设置为指向包含从服务捕获的 URL 的字符串变量,然后呈现图像并关闭 Div。 如果发生错误,HtmlTextWriter 将只打印“Dilbert 正在度假”来代替卡通。

Protected Overrides Sub RenderContents(ByVal output As HtmlTextWriter)
    Try
        output.RenderBeginTag(HtmlTextWriterTag.Div)
        Dim img As New Image()
        img.ImageUrl = mDilbertPath
        img.RenderControl(output)
        output.RenderEndTag()

    Catch ex As Exception

        output.Write("Dilbert is on vacation.")

    End Try

End Sub

摘要

这个项目只是为了好玩,尽管它确实显示了一个非常基本的示例,说明了构建与 Web 服务交互的自定义控件的简单方法。

© . All rights reserved.