#asp.net #ajax #ascx
#asp.net #ajax #ascx
Вопрос:
Я хочу поместить веб-элемент управления ASTreeView в пользовательский веб-элемент управления, пример кода ASTreeView похож:
<ct:ASTreeView ID="astvMyTree"
runat="server"
...
LoadNodesProvider="~/ASTreeViewDemo5.aspx"
.../>
LoadNodesProvider — это страница, вызываемая ajax при загрузке узла … однако, если я сменил поставщика на свой файл .ascx, он не работает:
LoadNodesProvider="~/ASTreeViewDemo5.ascx"
он даже не прошел через часть Page_Load файла .ascx
Хотя это может быть связано с самим astreeview, мне интересно, в чем может быть проблема? что я могу сделать, чтобы это исправить?
Спасибо!
Комментарии:
1. Что значит «LoadNodesProvider — это страница, которая называется ajax …» Что такое «страница ajax»? Вы имеете в виду, что это страница обратного вызова ajax?
2. я не совсем знаком с ajax … я видел, что когда я нажимаю, чтобы загрузить узел, ajax вызовет эту страницу LoadNodesProvider для «рендеринга» подузлов…
3. Хорошо, смотрите ответы от Томаса и Порко. Вы не можете использовать пользовательский элемент управления в качестве страницы обратного вызова. Что он делает, так это асинхронный вызов другой страницы с использованием AJAX, и страница отвечает данными для загрузки узлов. Вам нужно вызвать либо страницу, либо веб-службу.
Ответ №1:
Это потому, что ascx должен иметь страницу контейнера ie. Вы не можете использовать его так же, как страницу.
Комментарии:
1. ОК. ответ принят. я использовал страницу. Запрос.Url.GetLeftPart(UriPartial. Путь), чтобы перейти к aspx, где включен элемент управления.
Ответ №2:
ASPX — это страница, а ASCX — пользовательский элемент управления. Вы не можете вызвать элемент управления ajax, поэтому вы, вероятно, хотите, чтобы это была страница с элементом управления на ней.
Ответ №3:
Хотя мне не совсем ясно, что должен делать LoadNodesProvider, если вы хотите инкапсулировать некоторый код или запустить процесс через AJAX, у вас есть несколько вариантов. Одним из них было бы создание веб-службы (для этого вы могли бы использовать WCF), которую мог бы вызывать метод AJAX. Другим вариантом было бы создать http-обработчик (расширение ASHX обычно обозначает это). Использование ASPX или ASCX для этого не имеет для меня большого смысла. Проко и Томас правы в отношении файла ASCX, это пользовательские элементы управления, а не автономные объекты.
Ответ №4:
Если вы действительно, действительно хотите использовать элемент управления ASPX page / ASCX, то, я полагаю, было бы лучше создать пустую страницу ASPX с одним заполнителем, а затем прикрепить свой пользовательский элемент управления (на основе параметров строки запроса или чего-то еще, я думаю) к заполнителю для отображения содержимого для вашегоУправление AJAX
Комментарии:
1. я не уверен, какие элементы управления вы имеете в виду, мой элемент управления или элемент управления astreeview (?) .. Теперь я добавил отдельную страницу в качестве страницы поставщика, но мне нужно использовать какой-то метод из asTreeView в .ascx … поэтому я должен создать еще один дубликат asTreeView в этом aspx, чтобы получить метод … этовсе еще есть ошибки, и я думаю, что код сейчас довольно запутанный… Я расстроен:-(
2. На странице ASPX вы можете использовать
<asp:Placeholder id="plcControl" runat="server">
для удержания элемента управления, а затем в своем коде вы можете сделать что-то вродеplcControl.Controls.Add(new asTreeView())
(при условии, что это ваш usercontrol (ascx)).3. … теперь я понимаю, что вы имеете в виду… это отличается от моей первоначальной цели… Мне нужно поместить ascx в разные места, а не aspx … но все равно спасибо!