UserControl中的AJAX ScriptManager

cjs*_*rio 4 c# ajax user-controls scriptmanager

我有一个UserControl,其中包含一个UpdatePanel,它包含一些其他控件.UserControl将用于已有ScriptManager的一些页面和其他没有ScriptManager的页面.我希望UserControl自动带来自己的ScriptManager(如果不存在).

我已经尝试过ScriptManager.GetCurrent,如果它返回null,我创建自己的ScriptManager并将其插入到Form中,但是我无法在UserControl的生命周期中尽早找到一个位置来运行此代码.我不断收到错误"带ID的控件'uPnlContentList'需要页面上的ScriptManager.ScriptManager必须出现在任何需要它的控件之前." 每次我尝试加载页面.我尝试运行我的代码的地方是OnInit,CreateChildControls和PageLoad,它们永远不会被调用,因为它在到达它们之前就已经死了.

我应该把这张支票放在哪里?

Dea*_*lin 11

在您的MasterPage中放置一个所有ASPX文件引用的ScriptManager.然后,您需要使用ScriptManager的站点中的任何其他位置使用ScriptManagerProxy,它将从母版页获取ScriptManager,并允许您在用户控件和后面的代码中使用它.

现在调用ScriptManager.GetCurrent(Page)将为您提供脚本管理器的引用.

<asp:ScriptManagerProxy>
  <Scripts>
    <asp:ScriptReference Path="~/Scripts/myscript.js" />
  <Scripts>
</asp:ScriptManagerProxy>
Run Code Online (Sandbox Code Playgroud)

这是一个链接:

MSDN信息