2013-04-05 4 views
0

добавляет WebUserControl во время выполнения, поэтому я не могу использовать MyWebUserControl.MyFunction(), у меня есть MasterPage, и я попытался это одно:Как позвонить на страницу ASCX Функция на странице ASPX?

_MainContentPage = CType(_Page.Form.FindControl("MyContentPlaceHolder"), ContentPlaceHolder) 
CType(_MainContentPage.FindControl("MyWebUserControl"), myType) 

Но _MainContentPage.FindControl("MyWebUserControl") возвращает TableCell.

Путь я добавить WubUserControl:

tcValue = New TableCell()  
tcValue.Controls.Add(_Page.LoadControl("Paht/WebUserControl")) 
tcValue.ID = "MyWebUserControl" 

Ну Thats причина _MainContentPage.FindControl("MyWebUserControl") возвращающего TableCell , но как получить WebControl и вызвать Fcuntion.

+0

Возможно, вам придется использовать отражение, чтобы исследовать класс управления пользователя, а затем вызвать метод. – AlwaysAProgrammer

+0

спасибо, но я уже сделал это (см. Вопрос обновления) – Logar314159

+0

Предполагая, что ваш ascx находится в заполнителе, вы можете пропустить элементы управления в заполнителе и сделать что-то вроде 'If (TypeOf (control) Is MyAscx) Затем DirectCast (control, MyAscx) .MyMethod() '? – valverij

ответ

0

Решение получает TableCell, а затем находит элемент управления, после этого вызывает функцию.

_MainContentPage = CType(_Page.Form.FindControl("MyContentPlaceHolder"),ContentPlaceHolder) 
MyTableCell = CType(_MainContentPage.FindControl("MyWebUserControl"), TableCell) 
MyWebControl = CType(MyTableCell.Controls(0), MyType) 
MyWebControl.MyFunction() 
0

Насколько сложно выполнить эту функцию в виде веб-метода или извлечь эту функцию в обработчике HTTP asp.net для доступа во всем мире. Я думаю, что вы можете сделать это лучше, чем использовать размышления и другие вещи для доступа к нему.

+0

хорошо ... другой способ сделать это, спасибо. – Logar314159

Смежные вопросы