Как вызвать WebMethod для элемента управления в JavaScript - PullRequest
3 голосов
/ 27 января 2011

Я пытаюсь вызвать WebMethod (GetData ()) для элемента управления на веб-странице, используя JavaScript.

<script type="text/javascript">
    $(document).ready(function () {
        //this selector needs fixed
        $('<%= Control1.ClientID %>').GetData();
    });
</script>

<tel:RadScriptManager ID="RadScriptManager1" runat="server" />
<tel:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1">
    <uc1:Control ID="Control1" runat="server" />
</tel:RadAjaxPanel>

UC: Контрольный код:

    [WebMethod()]
    [ScriptMethod()]
    protected void GetData()
    {
        //stuff happens here
    }

Я не могу понять, какой селектор использовать. У меня есть несколько элементов управления на странице, и я хочу вызывать их в разное время. Какой тип селектора или какую команду я использую для запуска этого WebMethod?

Ответы [ 3 ]

2 голосов
/ 27 января 2011

Насколько я понимаю, невозможно вызвать webmethod / pagemethod для дочернего / пользовательского элемента управления.

Если бы вы переместили этот веб-метод в родительский aspx, вам нужно сделать что-то вроде этого:

jQuery.ajax({
  type: 'POST',
  contentType: 'application/json; charset=utf-8',
  data: '{}',
  dataType: 'json',
  url: 'MyPage.aspx/SomePageMethod',
  success: function(result){
    alert(result);
  }
});
0 голосов
/ 27 января 2011

Вы смешиваете JavaScript и ASP.NET здесь.Даже если вы видитетег в вашем файле .aspx, это не то, что фактически выводится в браузер.Элемент управления должен выводить некоторый действительный код HTML, который в действительности видит JavaScript.

Вы должны посмотреть полученный HTML-код (т. Е. Щелкнуть правой кнопкой мыши -> Просмотреть исходный код) и выяснить, с каким элементом HTML сопоставляется ваш элемент управления,и на основе ваших выводов создайте новый селектор.

0 голосов
/ 27 января 2011

Это выберет элемент с идентификатором, который заканчивается ControlID, который вы передаете ему, тем самым игнорируя любой дополнительный текст, который asp.net добавляет к вашему идентификатору элемента управления

$("[id$='_ControlIDHere']")

РЕДАКТИРОВАТЬ: Возможно, я неправильно понял вопрос, но если вы на самом деле просто ищете селектор, чтобы получить ссылку на ваши элементы управления, то мой метод будет работать

...