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






2.25/5 (4投票s)
2006年11月10日
3分钟阅读

35253

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
,并且使用 Try – Catch
块,启动一个 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 服务交互的自定义控件的简单方法。