2010-05-03 5 views
2

Я использую пользовательский элемент управления, который я создал (только файл .cs, а не файл .ascx), который делает некоторую магию и в зависимости от значения, генерируемого элементом управления, Мне нужно что-то сделать на родительской странице, которая является «хостингом» элемента управления. Он должен вызывать метод при определенных обстоятельствах (метод находится на родительском элементе управления).вызов метода на родительской странице из пользовательского элемента управления

управления находится на родительской странице так:

<customtag:MyControl ID="something" runat="server" /> 

Я динамически создавать кнопки и т.д. на самом элементе управления, но при нажатии на кнопку, скажем, например, что есть текстовое поле на элемент управления, и если значение текстового поля «bob», ему нужно вызвать метод на странице, в которой находится элемент управления ... как я могу это сделать?

ответ

3

Вы можете сделать то, что casperOne предложил, но я бы не советовал. Это жестко связывает ваш пользовательский элемент управления с вашей родительской страницей, что приводит к поражению цели пользовательского элемента управления.

Лично я бы добавил событие к пользовательскому элементу управления (скажем, ButtonClicked), с которым может справиться родительская страница. В обработчике событий у вашего родителя вы имеете дело с событием, как вы считаете нужным. Таким образом, вы можете подключить пользовательский элемент управления к другой странице позднее и не беспокоиться о логике в пользовательском элементе управления, который требует определенного типа родительской страницы.

0

Вы должны иметь возможность получить страницу, на которой находится элемент управления, через Parent property. Однако это будет возвращено вам в качестве элемента управления. Вы должны указать его на тип своей страницы, чтобы получить доступ к любым методам на той странице, которую вы определили.

0

Я думаю, что casperOne находится на правильном пути, но вам нужно идти дальше. Я giong, чтобы предположить, что этот пользовательский элемент управления будет использоваться более чем на странице. (Я обычно пишу VB.Net, извините, если мой C# имеет неверный формат)

Сделать базовый класс страницы (вы можете сохранить его в каталоге App_Code или в проекте):

public class PageToInheritFrom : System.Web.UI.Page { 
    public void SpecialFunction() { 
    }  
} 

Теперь убедитесь, что все страницы наследуют от этой страницы в вашем коде позади файла:

public partial class _Default : PageToInheritFrom { 

} 

Теперь в вашем пользовательском элементе управления вы знаете, что тип страницы и может позвонить

((PageToInheritFrom)this.Page).SpecialFunction(); 
Смежные вопросы

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