在控件中包含WebService引用

时间:2020-03-06 14:31:36  来源:igfitidea点击:

我用C语言编写了一个控件,该控件重写了内置的DropDownList控件。为此,我需要包含一个javascript资源,并将其作为嵌入式资源包含在内,然后添加WebResource属性,该属性可以正常工作。

但是,我还需要引用一个Web服务,通​​常将其包含在这样的页面的scriptmanager中

<asp:scriptmanager id="scriptmanager" runat="server">
<Services>
<asp:ServiceReference Path="~/Path/To/Service.asmx" />
</Services>
</asp:scriptmanager>

有什么方法可以使页面在我创建的控件的后面代码中包含此引用,类似于它如何包含嵌入式javascript文件?

解决方案

如果知道用户控件所在的页面,则可以从用户控件执行((PageName)this.Page).scriptmanager.Services.Add()

我们只需添加JavaScript即可自己调用Web服务:

Sys.Net.WebServiceProxy.invoke(URL,methodName,useHttpGet,参数,successedCallback,failedCallback,userContext,timeOut);

http://www.asp.net/AJAX/Documentation/Live/ClientReference/Sys.Net/WebServiceProxyClass/WebServiceProxyInvokeMethod.aspx

该文档适用于asp.net Ajax 1.0,但与.net 3.5相同。

我们可以在代码或者控件的标记中添加ScriptManagerProxy,并通过它添加服务引用。 ScriptManagerProxy中的设置在编译时与"真实" ScriptManager合并。