当 webclass 处理一个来自浏览器的请求时,它必须发送一个响应到浏览器。一般来说,那个响应是浏览器显示给用户的一个 HTML 流。您可以用两种方式向浏览器返回 HTML:
WriteTemplate 方法是响应用户动作发送 HTML 到浏览器的一种最简单的方法。当 webclass 为包含这种方法的一个模板事件启动一个事件过程时,它将模板的 HTML 发回到浏览器。产生结果页面呈现给用户。
注意 如果要发送到浏览器的模板包含任何的替换指示符,webclass 在发送该响应之前激发 ProcessTag 事件。这是作为 WriteTemplate 方法处理的一部分自动发生的。
下面的代码显示了您如何在代码中使用这种方法的一个示例:
Private Sub OrderSearch_Respond()
OrderSearch.WriteTemplate
End Sub
在这段代码中,一个叫做 OrderSearch 的 webitem 有一个与之相关的 HTML 模板文件。当 Visual Basic 激发这个 webitem 的 Respond 事件时,它将那个模板的内容写到浏览器,浏览器将模板的内容显示给最终用户。
注意 如果在另外一个 webitem 的一个事件中调用 WriteTemplate 方法,则 WriteTemplate 方法不激发 Respond 事件。为保持 webclass 代码的条理性,您经常要在一个 Respond 事件中调用 WriteTemplate 方法。
WriteTemplate 方法可以携带一个叫做 Template 的选项参数,该参数允许您指定一个返回到浏览器的不同模板文件。当您需要从一组具有共同事件的模板中选择时,这个参数是有用的。例如,您可能有一组新闻,文章的格式相同、包含一系列相同超链接和其他标记元素,而不管它们的故事内容如何。这些文章保存在一个 webclass 可以利用的模板文件中。您可以将适当的标记元素与您 webclass 中的事件挂接,然后在一个 WriteTemplate 调用中使用 Template 参数来指定合适的模板文件获取一个用户请求。
详细信息 关于 ProcessTag 事件和其作为一个 Respond 事件一部分的处理的详细信息,请参阅“在 Webclass 中执行文本替换”。关于使用 WriteTemplate 方法和其参数的详细信息,请参阅《语言参考》中的“WriteTemplate 方法”。
如果您非常了解 HTML,也可以在您的事件过程中逐行编写 HTML,并使用 Response 对象将它发送到浏览器。这种发送 HTML 的方法比用 WriteTemplate 方法复杂,但在没有模板使用的情况下(比如您正在使用一个自定义的webitem)或在您想产生一个自定义的响应时,这种方法是非常有用的。
下面的例子显示了您如何使用 Response 对象的 Write 方法发送 HTML 到浏览器。在这个过程中,webclass 从一个数据库中获取用户信息并将它写到一个 HTML 表中:
Private Sub CustomerList_Respond() With Response '
写HTML
标头信息,并开始一个表.Write "<HTML>"
.Write "<BODY>"
.Write "<TABLE BORDER CELLSPACING=1 CELLPADDING=7>"
'
填充单元格直到到达记录集文件的结束Do While rs.EOF = False
'
在表中的一行写用户名和地址.Write "<TR>"
.Write "<TD>" & rs("lastname") & "," & rs("firstname") & "</TD>"
.Write "<TD>" & rs("address") & "</TD>"
.Write "<TD>" & rs("city") & "</TD>"
.Write "<TD>" & rs("state") & "</TD>"
.Write "<TD>" & rs("zipcode") & "</TD>"
.Write "</TR>"
'
移动到记录集中的下一个记录,然后循环rs.MoveNext
Loop
'
结束该表,然后写该页的结束标记。.Write "</TABLE>"
.Write "</BODY>"
.Write "</HTML>"
End With
End Sub
使用 Write 方法的几点注意事项:
详细信息 关于在 webclass 代码中使用 ASP 对象的详细信息,请参阅“ IIS 应用程序的对象模型”。