Подтвердить что ты не робот

Вызов метода страницы ascx с помощью jquery

Я знаю, что я могу вызвать метод страницы с помощью jquery, используя следующий синтаксис

$.ajax({
  type: "POST",
  url: "Default.aspx/GetDate",
  data: "{}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(msg) {
    // Replace the div content with the page method return.
    $("#Result").text(msg.d);
  }
});

Это работает для страниц aspx, но возможно ли это с ascx страницами? (веб-элементы управления)

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

Примечание. Чтобы быть ясным, когда я пытаюсь вызвать страницу ascx я am, обновляя URL-адрес в jquery:)

4b9b3361

Ответ 1

Нет, поскольку элементы управления ascx не представляют собой настоящий URL-адрес, доступ к которому можно получить с клиентской машины. Они чисто серверные, предназначенные для встраивания в другие страницы.

Что вы можете сделать, так это просто создать страницу aspx, содержащую тот же фрагмент html, который у вас есть в вашем файле ascx. На странице aspx необязательно должен быть предоставлен полный html-документ (<html> <body> и т.д.), Он может просто отображать пользовательский элемент управления, который вас интересует.

Мы используем эту технику все время с ингридным плагином, для которого требуется URL-адрес обратного вызова для содержимого таблицы.

Ответ 2

Я не думаю, что это возможно, запросив файл ascx напрямую - т.е. поставляя "MyControl.ascx" в качестве параметра url в $.ajax(..). Файл ascx не отображается непосредственно веб-сервером.

Вы можете, я полагаю, предоставить URL-адрес страницы aspx, содержащей пользовательский элемент управления - т.е. если экземпляр MyControl.ascx живет на MyPage.aspx, вам нужно будет указать "MyPage.aspx" в качестве параметра url. Похоже, что это может победить цель того, что вы пытаетесь выполнить.

EDIT: То, что сказал Клайд ниже, кажется хорошей идеей. Я делаю что-то подобное себе, включая элемент управления ascx на странице, чье задание более или менее просто для его размещения для доступа с клиентской стороны script.

Ответ 3

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

Ответ 4

Как насчет создания метода на странице .aspx, которая делает то, что ему нужно, с информацией из элемента управления? Я знаю, что люди возвращаются и четвертые, на какие элементы управления должны содержать или не содержать, но если элемент управления содержит только свойства и объекты, я думаю, что функция на странице .aspx может работать для вас. Очевидно, что было бы много компромиссов.

Ответ 6

Вот способ обойти ограничение использования только страниц (ScriptMethod), доступных на страницах ASPX. В этом примере создается прокси-сервер с использованием базового класса страницы и специальный атрибут для декодирования методов в коде кода ASCX и доступ к ним через клиента.

Создание метода страницы (ScriptMethod) в пользовательском элементе управления ASCX с использованием AJAX, JSON, базовых классов и отражения

Ответ 7

Я бы создал Generic Handler (.ashx), который загружает элемент управления и записывает отображаемый HTML в Response.

Ответ 8

Вы можете написать метод GetDate() в Default.aspx или другой файл aspx И ВЫ МОЖЕТЕ ЗВОНОТЬ, ЧТО МЕТОД ИЗ ФАКСА .ASCX.

Пример:

В UserControl.ascx:

$.ajax({
 type: "POST",
 url: "Default.aspx/GetDate",
 data: "{}",
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function(msg) {
 // Replace the div content with the page method return.
 $("#Result").text(msg.d);
}

});

В Default.aspx.cs:

Public void GetDate() //Public static void { //your code here }