Вызов метода страницы 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:)
Ответы
Ответ 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 может работать для вас. Очевидно, что было бы много компромиссов.
Ответ 5
Это пример предоставления пользовательского элемента управления через вызов веб-службы jQuery.
Ответ 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
}