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

Я создал веб-сервис, который мне нужно использовать на моей странице .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 из <script runat="server">, как я, или я должен делать это по-другому?

1 Ответ

4 голосов
/ 18 июня 2009

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

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

<asp:ScriptManagerProxy runat="server" ID="Manager">
<Scripts>
    <asp:ScriptReference Path="~/JScript.js" />
</Scripts>
</asp:ScriptManagerProxy>
...