C # AJAX веб-методы - что я делаю не так? - PullRequest
2 голосов
/ 01 октября 2009

Это может быть очень нудистский вопрос, но я пытаюсь реализовать простой веб-метод с использованием AJAX C # и asp.net, вот код:

C # код позади:

using System.Web.Services;

public partial class Controls_LeftNavigation : System.Web.UI.UserControl
{
    [WebMethod]
    public static string MyMethod()
    {
        return "Hello";
    }
}

Страница Asp.net:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>

<script type="text/javascript">
            function pageLoad() {
                var acc = $find('<%= Accordion1.ClientID %>_AccordionExtender');
                acc.add_selectedIndexChanging(ClickHandler);
            }
            function ClickHandler() {
                // Do whatever you want.
                alert('Something is happening!');
                alert(PageMethods.MyMethod());
            }
</script>

при нажатии кнопки навигации отображается сообщение «Что-то происходит!» окно сообщения, но не отображается предупреждение метода страницы.

Я использую аккордеон инструментария ASP AJAX, поэтому событие загрузки страницы добавляет событие обработчика нажатия к этому элементу управления.

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

PageMethods для пользовательских элементов управления не поддерживаются.

2 голосов
/ 01 октября 2009

Метод страницы асинхронный, вы должны предоставить обработчик onSuccess следующим образом:

function OnSuccess(result) {
   alert(result);
}

function ClickHandler() {
   PageMethods.MyMethod(OnSuccess);
}

Вам также нужно будет запретить событию SelectedIndexChanging выполнить постбэк, иначе страница не сможет обработать возвращаемый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...