在控件中包含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合并。