添加带有自定义控件的每日Dilbert漫画

分享于 

5分钟阅读

Web开发

  繁體

介绍

本文描述了用于在网站上显示每日Dilbert漫画的自定义控件的构造。 控件非常简单,并通过 public web服务提供的Chandu Thota服务,可以在任何网页上从 eSynaps.com. Dilbert中删除。

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

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

入门

包含的文件包括一个网页控制库项目和一个示范网站。 要开始,打开包含的压缩文件并将两个项目安装到你的文件系统中。 打开IIS并为web应用程序创建一个虚拟目录。 将解决方案打开到可视化 2005并进行任何必要的更改以使两个项目都进入解决方案。 配置好后,解决方案资源管理器应该显示这些项目,引用和文件:

图 2: 带有网络应用程序和控制库的解决方案资源管理器

在检查解决方案时,注意"dilbert"控件库只包含一个控件,该控件称为" DilbertControl"。 这个项目还包括一个指向 http://www.esynaps.com/WebServices/DailyDiblert.asmx?op=DailyDilbertImagePath;的网页引用这个 public 站点提供用于捕获由控件显示的Dilbert归档动画的web服务。

web应用程序只包含一个网页( Default.aspx ),并包含对"dilbert"dll的引用。

web应用程序用作用于测试自定义控件的容器。 页面本身不包含添加代码,页面上唯一的其他元素显示文本"每日 dilbert"。

代码:Dilbert控件

构建"dilbert"自定义控件是在初始化时从web服务检索信息;检索到的信息是动画图像的URL的路径。 初始化时,将检索URL并在呈现控件时创建并添加图像,它的imageURL 属性将指向从web服务捕获的URL。

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

Imports SystemImports System.Collections.GenericImports System.ComponentModelImports System.TextImports System.WebImports System.Web.UIImports System.Web.UI.WebControls
<ToolboxData("<{0}:DilbertControl" & _ 
 "runat="server"></{0}:DilbertControl>")> _PublicClass DilbertControl
 Inherits WebControl

按照类声明,声明两个成员变量;一个用于web服务,一个用于包含动画图像文件的路径的字符串变量。

Private mDilbert As Dilbert.com.esynaps.www.DailyDilbertPrivate mDilbertPath AsString

下一步是初始化处理程序:

PrivateSub DilbertControl_Init(ByVal sender AsObject, _
 ByVal e As System.EventArgs) HandlesMe.Init
 Me.Width = 600Me.Height = 100Try mDilbert = New Dilbert.com.esynaps.www.DailyDilbert
 mDilbertPath = mDilbert.DailyDilbertImagePath()
 CatchExitSubEndTryEndSub

control初始化处理程序 of" mDilbert"成员变量的新实例,然后设置" mDilbertPath"字符串变量以包含调用服务" DailyDilbertImagePath"web方法所返回的图像 URL。

呈现的最后一个细节是呈现;在这里,RenderContents 被重写并使用 尝试- 捕捉 block, Div 然后将图像URL属性设置为指向包含从服务捕获的URL的字符串变量,然后显示图像。 Div 关闭如果发生错误,HtmlTextWriter 将打印出"dilbert休假"而不是动画。

ProtectedOverridesSub RenderContents(ByVal output As HtmlTextWriter)
 Try output.RenderBeginTag(HtmlTextWriterTag.Div)
 Dim img AsNew Image()
 img.ImageUrl = mDilbertPath
 img.RenderControl(output)
 output.RenderEndTag()
 Catch ex As Exception
 output.Write("Dilbert is on vacation.")
 EndTryEndSub

摘要

这个项目只是为了有趣,尽管它显示了构建一个与web服务交互的自定义控件的基本示例。


相关文章