动态填充控件 (C#)
ASP.NET AJAX 控件工具包中的 DynamicPopulate 控件) 调用 Web 服务 (或页面方法,并将生成的值填充到页面上的目标控件中,而无需刷新页面。
概述
DynamicPopulate
ASP.NET AJAX 控件工具包中的控件) 调用 Web 服务 (或页面方法,并将结果值填充到页面上的目标控件中,而无需刷新页面。 本教程介绍如何进行此设置。
步骤
首先,需要一个 ASP.NET Web 服务,它实现要由 DynamicPopulate
调用的方法。 Web 服务类需要 ScriptService
中 Microsoft.Web.Script.Services
定义的 属性;否则,ASP.NET AJAX 无法为 Web 服务创建客户端 JavaScript 代理,而而 而后者又是必需的 DynamicPopulate
。
Web 方法必须具有一个名为 的字符串类型的参数, contextKey
因为 DynamicPopulate
控件会随每个 Web 服务调用发送一条上下文信息。 以下 Web 服务以 参数表示 contextKey
的格式返回当前日期:
<%@ WebService Language="C#" Class="DynamicPopulate" %>
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[ScriptService]
public class DynamicPopulate : System.Web.Services.WebService
{
[WebMethod]
public string getDate(string contextKey)
{
string myDate = "";
switch (contextKey)
{
case "format1":
myDate = String.Format("{0:MM}-{0:dd}-{0:yyyy}", DateTime.Now);
break;
case "format2":
myDate = String.Format("{0:dd}.{0:MM}.{0:yyyy}", DateTime.Now);
break;
case "format3":
myDate = String.Format("{0:yyyy}/{0:MM}/{0:dd}", DateTime.Now);
break;
}
return myDate;
}
}
然后,Web 服务保存为 DynamicPopulate.cs.asmx
。 或者,可以使用 控件在实际 ASP.NET 页中将 方法作为页DynamicPopulate
方法实现getDate()
。
在下一步中,创建新的 ASP.NET 文件。 与往常一样,第一步是在 ScriptManager
当前页中包含 以加载 ASP.NET AJAX 库并使 Control Toolkit 正常工作:
<asp:ScriptManager ID="asm" runat="server" />
然后,添加标签控件 (,例如,使用同名的 HTML 控件或 <asp:Label
/> Web 控件) 稍后将显示 Web 服务调用的结果。
<label id="myDate" runat="server" />
HTML 按钮 (为 HTML 控件,因为我们不需要回发到服务器) 随后将用于触发动态填充:
<input type="button" id="Button1" runat="server" value="Load date (m-d-y)" />
最后,我们需要 DynamicPopulateExtender
控件来连接起来。 以下属性将 (与明显的属性分开设置, ID
并 runat
="server"
) :
TargetControlID
放置 Web 服务调用的结果的位置ServicePath
如果要使用 page 方法, (省略 Web 服务的路径)ServiceMethod
Web 方法或页面方法的名称ContextKey
要发送到 Web 服务的上下文信息PopulateTriggerControlID
触发 Web 服务调用的 元素ClearContentsDuringUpdate
是否在 Web 服务调用期间清空目标元素
如你所看到的,控件需要一些信息,但将所有内容都放在原位是非常直接的。 下面是当前方案中控件 DynamicPopulateExtender
的标记:
<ajaxToolkit:DynamicPopulateExtender ID="dpe1" runat="server"
ClearContentsDuringUpdate="true"
TargetControlID="myDate" ServicePath="DynamicPopulate.cs.asmx"
ServiceMethod="getDate"
ContextKey="format1" PopulateTriggerControlID="Button1" />
在浏览器中运行“ASP.NET”页,然后单击按钮;你将收到月份-日-年格式的当前日期。
单击该按钮可从服务器检索日期 (单击以查看全尺寸图像)