asp.net - 在异步回发期间以编程方式添加 ServiceReference

标签 asp.net user-controls scriptmanager asynchronous-postback

是否可以在异步回发期间向 Page 上的 ScriptManager 添加一个新的 ServiceReference 实例以便随后我可以通过客户端脚本使用引用的 Web 服务?

我正在尝试在位于 Repeater 内的 UserControl 内执行此操作,这就是为什么在 Page_Load 期间以编程方式添加 ScriptReference 不会在这里工作。

编辑 2: 这是我从 UserControl 调用的代码,它没有达到我的预期(在异步回发期间将 ServiceReference 添加到 ScriptManager):

private void RegisterWebservice(Type webserviceType)
{
    var scm = ScriptManager.GetCurrent(Page);
    if (scm == null)
        throw new InvalidOperationException("ScriptManager needed on the Page!");

    scm.Services.Add(new ServiceReference("~/" + webserviceType.Name + ".asmx"));
}

我的目标是让我的 UserControl 尽可能不干扰周围的应用程序;否则我将不得不在包含 PageScriptManagerProxy 中静态定义 ServiceReference,这不是我想要的想要。

编辑:

我写这篇文章的时候一定很累...因为我打算写 ServiceReference 而不是 ScriptReference。相应地更新了上面的文本。

现在我有:

<asp:ScriptManagerProxy runat="server" ID="scmProxy">
    <Services>
        <asp:ServiceReference Path="~/UsefulnessWebService.asmx" />
    </Services>
</asp:ScriptManagerProxy>

但我想在代码隐藏中注册网络服务。

最佳答案

尝试这样的事情......

if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
    ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "script1", "~/js/myjs.js");
}

关于asp.net - 在异步回发期间以编程方式添加 ServiceReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1941056/

相关文章:

asp.net - 如何从外部 JavaScript 文件访问服务器控件?

javascript - 当前上下文中不存在名称 'ScriptManager'

c# - 从更新面板回发后调用 javascript 代码

c# - 更新面板内的中继器 - ItemComand 代码问题 - 在代码隐藏中使用 ScriptManager 调用 javascript 函数

asp.net - Ninject 给出 NullReferenceException

c# - ASP.NET - App_Code - 在同一文件夹中混合 VB 和 C#

c# - 快速简单的 PDF 查看器创意

c# - 在 UserControl (ASP.NET) 中时 URL 未被解析

c# - 如何在 DataContext 略有不同的情况下重用 UserControl?

user-controls - Umbraco NodeByAlias?