Передать значение из aspx в ascx
У меня есть веб-страница, и внутри нее есть пользовательский элемент управления. У меня есть свойство на странице aspx, которое устанавливается в методе pageinit, и мне нужно это свойство на странице ascx. Как я могу получить это?
3 ответа
Решение
Создайте публичное свойство внутри ascx и установите его одновременно с настройкой на странице aspx.
Просто чтобы вы знали, PreInit - это EventHandler, а не метод.
MyAdminPage myPageInstance = this.Parent as MyAdminPage;
if(myPageInstance != null)
{
...
}
Там было несколько вопросов по этому вопросу.
Самые простые варианты следующие:
- Используйте открытую переменную и получите доступ к ней с родительской страницы.
- Присвойте переменную скрытому полю в интерфейсе ascx. Поле как это:
<asp:HiddenField ID="ascxField" runat="server" />
,
Пример ниже для #1, но #2 почти то же самое.
Пример № 1:
Страница ASPX:
Внешний интерфейс:
<%@ Register TagPrefix="Admin" TagName="MyUserControl" Src="~/UserControls/.../MyUserControl" %>
...
<Admin:MyUserControl ID="MyUserControl" AutoPostBack="true" runat="server" Visible ="false" />
Код позади:
this.MyUserControl.Variable1 = 1;
this.MyUserControl.Variable2= "value";
Ascx страница:
Код позади
public int Variable1 { get; set; }
public string Variable2 { get; set; }