如何从 DNN 中的 .ascx Web 用户控件更新 ScriptManager?

Mat*_*att 2 asp.net dotnetnuke web-services scriptmanager service-reference

我创建了一个需要在我的 .ascx 页面中使用的 Web 服务。我不能只是添加这个:

<asp:ScriptManager ID="OWUScripts" runat="server">
    <Services>
        <asp:ServiceReference Path="~/OWUDashboard.asmx" />
    </Services>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)

因为那时我在页面上有多个 ScriptManager。所以我做了一些研究,发现我需要将它添加到 Page_Load 事件中...

Dim myScriptManager As ScriptManager = ScriptManager.GetCurrent(Me.Page)

Dim objServiceReference As ServiceReference = New ServiceReference()
objServiceReference.Path = "~/MyService.asmx"
myScriptManager .Services.Add(objServiceReference)
Run Code Online (Sandbox Code Playgroud)

但是我无法访问 Page_Load 事件,因为已经有一个预设(它是一个皮肤等等)所以我把代码扔在了 <script runat="server"></script>

然而,它给了我一个错误,说“Declaration Expected”......我拿出了几行,它似乎在说它找不到 Me.Page (或者它是空的)

关于我做错了什么的任何见解?

我可以<script runat="server">像我一样访问 Me.Page还是应该以不同的方式访问?

Gen*_*eev 5

在这种情况下,您可以使用 ScriptManagerProxy 类以声明方式添加引用。只要在“父”页面中已经定义了 ScriptManger,就会使用代理类。您使用 ScriptManagerProxy 的方式与使用常规 ScriptManager 的方式相同。可以在此处找到有关代理类的更多信息

示例标记:

<asp:ScriptManagerProxy runat="server" ID="Manager">
<Scripts>
    <asp:ScriptReference Path="~/JScript.js" />
</Scripts>
</asp:ScriptManagerProxy>
Run Code Online (Sandbox Code Playgroud)