2009-11-25 4 views
0


Доступ учредительные управления контролирует пользователя от хостинга веб-страницы

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

Но я не уверен, что выше утверждение верно, так как я был в состоянии получить доступ (от хостинга веб-страницы) ClickButton.Click событие (подразумевается, что WebUserControl1 содержит контроль ClickButton):

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Button ClickButton = (Button)WebUserControl1.Controls[0]; 
     ClickButton.Click += someClickHandler; 
    } 


thanx

ответ

1

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

Так что да, вы правы, это не скрыто до такой степени, что вы не можете получить к нему доступ, но он также не опубликован. Аналогичным образом, используя отражение, вы можете вызвать частные методы, которые иначе не могли. Используя определенные инструменты, вы можете получить доступ и изменить код, который уже скомпилирован; так что ничего не может быть вне досягаемости.

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

+0

спасибо, что помогли мне – carewithl

1

Вы можете публиковать свойства пользовательского элемента управления (т. Е. Настройки), элементы управления и события, что означает, что вам не нужно находить элемент управления в usercontrol.

+0

Я понимаю, что, но я пытаюсь понять, что веб-страница хостинга должна иметь доступ только к тем сведениям (событиям, методам и свойствам) содержащихся элементов управления (с помощью встроенных элементов управления, которые я просматриваю для контроля внутри пользовательского элемента управления), который пользовательский контроль решает разоблачить. Но из-за словаря WebUserControl1.Controls все детали (события, методы и свойства) содержащегося элемента управления отображаются независимо от того, нравится вам это или нет. Например, возможно, я хочу, чтобы метод содержащегося элемента управления был доступен только для хостинга пользовательского элемента управления, но – carewithl

+0

из-за словаря WebUserControl.Controls, это событие также будет доступно для веб-сайта, на котором размещается этот пользовательский элемент управления – carewithl

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