Как я могу обновить ScriptManager из пользовательского веб-элемента управления.ascx в DNN?

Я создал веб-сервис, который мне нужно использовать на моей странице.ascx. Я не могу просто добавить это:

<asp:ScriptManager ID="OWUScripts" runat="server">
    <Services>
        <asp:ServiceReference Path="~/OWUDashboard.asmx" />
    </Services>
</asp:ScriptManager>

Потому что тогда у меня есть несколько 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)

Но я не могу получить доступ к событию Page_Load, так как уже есть одна предустановка (со скином и всем), поэтому я бросил код между <script runat="server"></script>

Однако это выдает мне ошибку, в которой говорится: "Ожидается объявление"... Я вынул несколько строк, и казалось, что он не может найти Me.Page

Любое понимание того, что я делаю неправильно?

Могу ли я получить доступ к Me.Page из <script runat="server"> как я или я должен делать это по-другому?

1 ответ

Решение

В таких случаях существует класс ScriptManagerProxy, который можно использовать для декларативного добавления ссылок. Прокси-класс используется всякий раз, когда на "родительской" странице уже определен ScriptManger. Вы работаете с ScriptManagerProxy так же, как с обычным ScriptManager. Более подробную информацию о прокси-классе можно найти здесь.

Пример разметки:

<asp:ScriptManagerProxy runat="server" ID="Manager">
<Scripts>
    <asp:ScriptReference Path="~/JScript.js" />
</Scripts>
</asp:ScriptManagerProxy>
Другие вопросы по тегам